[英]How to authenticate by smart card as a fallback to windows authentication in httpClint/httpListener
[英]Windows Smart Card Authentication to Access Website-Data
我必须从网站上获取项目的数据。 要访问此页面,需要带PIN的智能卡。 不幸的是,目前我还不知道如何在C#中实现这一点。
目标:1.使用智能卡和PIN在网站上进行身份验证2.获取/发布一些数据
有人可以为我提供解决此问题的方法。
更新
当我尝试通过浏览器访问网站时,显示“正常” Windows SmartCard对话框。
我的目标是编写一个仅在页面上执行GET请求的控制台应用程序。 完整的身份验证应在后台运行。 智能卡的PIN可以进行硬编码。
好的,我已经找到解决问题的方法。 如果有人应该有类似的想法,我将提供我的解决方案:
X509Certificate2 cert = PickCertificate();
var req = (HttpWebRequest)WebRequest.Create("//");
req.CookieContainer = new CookieContainer();
req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0";
req.ClientCertificates.Add(cert);
req.UseDefaultCredentials = true;
ServicePointManager.ServerCertificateValidationCallback = (c, certificate, chain, errors) => true;
var res = (HttpWebResponse)req.GetResponse();
public static X509Certificate2 PickCertificate()
{
X509Certificate2 cert;
var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
if (store.Certificates.Count == 1)
cert = store.Certificates[0];
else
cert = X509Certificate2UI.SelectFromCollection(store.Certificates, "Caption", "Message", X509SelectionFlag.SingleSelection)[0];
store.Close();
return cert;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.