کمک فوری درباره تبدیل کدی از ASP.NET به ASP classic
با سلام
ممنون میشم کمک کنید
من در حال کار روی امضای دیجیتال هستم.
که احراز هویت بصورت دو طرفه می باشد
ابتدا سمت کاربر داده امضا می شود
در کد زیر:
<script type="text/javascript"> // Some needed constants CAPICOM_CURRENT_USER_STORE = 2; CAPICOM_STORE_OPEN_READ_ONLY = 0; CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; CAPICOM_ENCODE_BASE64 = 0; function Authenticate() { try { var challenge = document.getElementById("<%=hid_Challenge.ClientID %>"); var response = document.getElementById("<%=hid_Response.ClientID %>"); // Open windows certificate store var store = new ActiveXObject("CAPICOM.Store"); store.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY); // Show personal certificates which are installed for this user var certificates = store.Certificates.Select("KeyA3 Sample PKI Authentication", "Please select a certificate to authenticate."); // Proceed if any certificate is selected if (certificates.Count > 0) { var signer = new ActiveXObject("CAPICOM.Signer"); signer.Certificate = certificates.Item(1); var timeAttrib = new ActiveXObject("CAPICOM.Attribute"); timeAttrib.Name = CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME; var date = new Date('<%=DateTime.Now.ToString("F", new System.Globalization.CultureInfo("en-US")) %>'); timeAttrib.Value = date.getVarDate(); signer.AuthenticatedAttributes.Add(timeAttrib); var signedData = new ActiveXObject("CAPICOM.SignedData"); signedData.Content = challenge.value; response.value = signedData.Sign(signer, true, CAPICOM_ENCODE_BASE64); return true; } return false; } catch (e) { alert(e.description); return false; } } </script>
و در کد زیر که سمت سرور است امضا چک میشود:
Byte[] signedData; ContentInfo content; SignedCms signed; if (hid_Response.Value == null) throw new ArgumentNullException("Response"); signedData = Encoding.Unicode.GetBytes(Session["Challenge"].ToString()); content = new ContentInfo(signedData); signed = new SignedCms(content, true); signed.Decode(Convert.FromBase64String(hid_Respons e.Value)); // Set the parameter to 'true' if you want the certificate not be checked. signed.CheckSignature(true); // Do further authentication and user mapping here. // For example you could check some certificate parameters against your database. // Here we only show the certificate information. Nothing checked here. lbl_Message1.Text = "Authenticated successfully."; lbl_Message1.Visible = true; Dictionary<String, String> certProps = new Dictionary<String, String>(); certProps.Add("Subject", signed.Certificates[0].Subject); certProps.Add("Issuer", signed.Certificates[0].Issuer); certProps.Add("Valid From", signed.Certificates[0].NotBefore.ToString()); certProps.Add("Valid To", signed.Certificates[0].NotAfter.ToString()); certProps.Add("Friendly Name", signed.Certificates[0].FriendlyName); certProps.Add("Version", signed.Certificates[0].Version.ToString()); certProps.Add("Serial Number", signed.Certificates[0].SerialNumber); certProps.Add("Thumbprint", signed.Certificates[0].Thumbprint); gvCertificate.DataSource = certProps; gvCertificate.DataBind(); gvCertificate.Visible = true;
در حال حاض من مجبور هستم که کدم رو در asp classic اجرا کنم.
متاسفانه زیاد تسلط ندارم
و حتی توانایی جداسازی کد در سمت کاربر و سرور ندارم
کارم خیلی گیره
مرسی از لطفتون
نقل قول: کمک فوری درباره تبدیل کدی از ASP.NET به ASP classic
من تسلط كامل به asp classic دارم ، نميدونم كدتون به چه صورت كار ميكنه و چيكار انجام ميده بيشتر توضيح بديد شايد بتونم كمكتان كنم ، يا اگر sample asp classic داريد بزاريد
نقل قول: کمک فوری درباره تبدیل کدی از ASP.NET به ASP classic
نقل قول:
نوشته شده توسط
eidazha
من تسلط كامل به asp classic دارم ، نميدونم كدتون به چه صورت كار ميكنه و چيكار انجام ميده بيشتر توضيح بديد شايد بتونم كمكتان كنم ، يا اگر sample asp classic داريد بزاريد
سلام
ممنون که جواب دادی
ببین کد من برای احراز هویت دو طرفه استفاده میشه
مراحل به این شکل هست که اول سروز یک رشته تصادفی به کلاینت میده و کلاینت توسط کتابخانه capicom که ماله ماکروسافته اونو امضا میکنه و دوباره کد سمت سرور امضای کلاینت رو بررسی می کنه تا ببینه کلاینت امضاش معتبره یا نه.
عملیات sign , verify با کتابخانه capicom انجام میشه
البته کدی که در بالا اوردم و در جاوا اسکریپت هستش برای انجام امضاست.
و کد بعدی در فایل cs اجرا میشه و سمت سرور امضا با کلاس SignedCms چک میشه که مال .net است
البته کتابخانه capicom تابع verify داره که باید سمت سرور اجرا بشه که من نمیتونم اجراش کنم
نقل قول: کمک فوری درباره تبدیل کدی از ASP.NET به ASP classic
همانطور كه ميدونيد نميشه تو asp classic از كامپونت يا كتابخانه خاصي استفاده كرد اما ميشه يه جورايي با تركيب اين دو زبان (asp.net و asp classic) از برنامه استفاده كرد.