<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Heck's  Blog]]></title> 
<link>https://www.heckjj.com/index.php</link> 
<description><![CDATA[一瞬间的决定，往往可以改变很多，事实上，让自己成功的往往不是知识，是精神！ 如果你总是为自己找借口，那只好让成功推迟。执行力，今天！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Heck's  Blog]]></copyright>
<item>
<link>https://www.heckjj.com/asp-net-digital-certificates-process/</link>
<title><![CDATA[ASP/ASP.net中处理客户端数字证书]]></title> 
<author>Heck &lt;@hecks.tk&gt;</author>
<category><![CDATA[编程杂谈]]></category>
<pubDate>Tue, 21 Sep 2010 07:49:29 +0000</pubDate> 
<guid>https://www.heckjj.com/asp-net-digital-certificates-process/</guid> 
<description>
<![CDATA[ 
	<span style="font-family: 微软雅黑;">使用客户端数字证书和基本身份验证（Basic），域服务器的摘要式身份验证、集成 Windows 身份认证或自定义的 Form 认证等方式相比，虽然部署和管理方面稍微复杂一些，但安全性也更好一些，应用上也较为灵活。<br/><br/> 在 ASP 和 ASP.NET 中处理和识别客户端数字证书是非常容易的，代码如下：<br/><br/><span style="font-size: 14px;"><strong><span style="color: #4169E1;">ASP （VBScript）语法：</span></strong> </span></span><br/><textarea name="code" class="c#" rows="15" cols="100">
&nbsp;&nbsp;&nbsp;&nbsp;Dim subject
&nbsp;&nbsp; subject=Request.ServerVariables("CERT_SUBJECT") 
'或&nbsp;&nbsp; subject=Request.ClientCertifate("Subject")&nbsp;&nbsp;'--适用于 Subject 没有中文的证书 
</textarea><br/><span style="font-family: 微软雅黑;"><span style="font-size: 14px;"><strong><span style="color: #4169E1;">ASP.NET（C#） 语法：</span></strong> </span></span><br/><textarea name="code" class="c#" rows="15" cols="100">
&nbsp;&nbsp; string subject ;
&nbsp;&nbsp; HttpClientCertificate hcc = Request.ClientCertificate;
&nbsp;&nbsp; if(hcc.IsValid) = hcc.Subject; 
</textarea><br/><span style="font-family: 微软雅黑;">得到的 subject 字符串是以逗号分隔的子字段列表。例如，C=CN,O=BOC,CN=moslem ，然后将字符串分隔处理，取最后的 CN 值（可能不止一个 CN），这个值是用户的 Common Name ，即“常规名称”，一般就是用户的姓名或 ID。<br/><br/>拿到数字证书中的 CN 后，就可以做进一步的处理了，如对用户进行授权等。我认为比较有效的一种做法是在客户端同时启用数字证书和 Form 认证，可以通过比较 CN 和 Form 中输入的用户名的值是否匹配来做到多因子身份认证。<br/><br/> 相对来说，ASP.NET 中提供了专门的处理客户端数字证书的 HttpClientCertificate 类，因而在程序中处理也更为方便一些。</span><br/>Tags - <a href="https://www.heckjj.com/tags/%25E6%2595%25B0%25E5%25AD%2597%25E8%25AF%2581%25E4%25B9%25A6/" rel="tag">数字证书</a> , <a href="https://www.heckjj.com/tags/.net/" rel="tag">.net</a> , <a href="https://www.heckjj.com/tags/c%2523/" rel="tag">c#</a> , <a href="https://www.heckjj.com/tags/visual/" rel="tag">visual</a> , <a href="https://www.heckjj.com/tags/basic/" rel="tag">basic</a> , <a href="https://www.heckjj.com/tags/asp.net/" rel="tag">asp.net</a>
]]>
</description>
</item><item>
<link>https://www.heckjj.com/asp-net-digital-certificates-process/#blogcomment</link>
<title><![CDATA[[评论] ASP/ASP.net中处理客户端数字证书]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.heckjj.com/asp-net-digital-certificates-process/#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>