Buenos días señores.
Estoy con un desarrollo de un proyecto web (aplicación –portal clientes- web ASP.NET Framework 3.5, con WXP en desarrollo, y W2003 en producción) en empresa de Seguros.
Mi aplicación requiere autenticación de clientes utilizando DNI-e.
Buscando documentación por Internet, no he visto nada de código en tecnología .Net para recuperar los datos del titular del DNI-electrónico que se conecta a la página aspx.
Entiendo que los pasos son los siguientes:
Primeramente, se requiere el certificado de AC RAIZ DNIE, el usuario tendrá que introducir el DNIe en el lector de tarjetas e introducir el PIN.
Después, en el código de servidor de la página, tendríamos que recuperar los datos del titular del DNI-e para saber qué persona se ha conectado. En mi caso, nombre Exxx Pxxxx Vxxxx, DNI: 50…..M
Este es el código C# para la página aspx (ASP.NET) que debe comprobar los datos del usuario que se ha conectado al portal de cliente con DNI electrónico.
public partial class ComprobarCertificado : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
HttpClientCertificate certificado = Request.ClientCertificate;
certificado = Context.Request.ClientCertificate;
certificado = HttpContext.Current.Request.ClientCertificate;
if (!this.IsPostBack)
{
HttpClientCertificate cs = certificado;
if (cs.IsPresent)
{
//'Get the Organization (O) field from the Subject section.
//' certData.Text = cert.Get("Subject O")
Response.Write("ClientCertificate Settings:
");
Response.Write("Certificate = " + cs.Certificate + "
");
Response.Write("Cookie = " + cs.Cookie + "
");
Response.Write("Flags = " + cs.Flags + "
");
Response.Write("IsPresent = " + cs.IsPresent + "
");
Response.Write("Issuer = " + cs.Issuer + "
");
Response.Write("IsValid = " + cs.IsValid + "
");
Response.Write("KeySize = " + cs.KeySize + "
");
Response.Write("SecretKeySize = " + cs.SecretKeySize + "
");
Response.Write("SerialNumber = " + cs.SerialNumber + "
");
Response.Write("ServerIssuer = " + cs.ServerIssuer + "
");
Response.Write("ServerSubject = " + cs.ServerSubject + "
");
Response.Write("Subject = " + cs.Subject + "
");
Response.Write("ValidFrom = " + cs.ValidFrom + "
");
Response.Write("ValidUntil = " + cs.ValidUntil + "
");
Response.Write("What's this = " + cs.ToString() + "
");
Response.Write("Codificacion = " + cs.CertEncoding + "
");
X509Certificate desc = new X509Certificate(cs.Certificate);
string resultsTrue = desc.ToString(true);
Response.Write("
despues de sacar flujo de bytes : " + resultsTrue);
Response.Write("
Hash string : " + desc.GetCertHashString());
Response.Write("
Algoritmo (parametros): " + desc.GetKeyAlgorithmParametersString());
Response.Write("
Clave publica: " + desc.GetPublicKeyString());
}
else if (!certificado.IsValid)
{
Response.Write("el certificado no es valido" + "
");
}
else
Response.Write("No se ha encontrado certificado" + "
");
Les agradecería que me enviaran cuanta información técnica puedan de la forma de recuperar los datos del titular de DNI-e.
Quedo a la espera de cualquier observación técnica que puedan aportarnos, será de gran ayuda en este momento del proyecto.
Muchas gracias de nuevo y saludos cordiales.