Exemplo n.º 1
0
        public EAuthRequestViewModel CreateRequestAsync(string requestUrl, string callbackUrl, string serviceOid, string providerOid,
                                                        string signatureNsPrefix, bool includePublicKey, string sslCertificateThumbprint)
        {
            XmlDocument doc = EAuthPersonUtil.CreateSamlRequest(
                _eAuthUrl, ThisSystem.Oid, ThisSystem.Name, ThisSystem.Name, requestUrl, callbackUrl, serviceOid, providerOid,
                signatureNsPrefix, includePublicKey, sslCertificateThumbprint, out string requestId);

            string samlRequest = doc.OuterXml;
            string relayState  = null;

            SignUtil.Status signatureStatus = SignUtil.ValidateText(samlRequest);

            return(new EAuthRequestViewModel
            {
                RequestId = requestId,
                // Полета, необходими за скритата форма, която се POST-ва към еАвт.
                EAuthUrl = _eAuthUrl,
                SAMLRequest = EncodeSamlParameter(samlRequest),
                RelayState = EncodeSamlParameter(relayState),
                // Допълнителни полета за потребителя и за debug цели.
                SamlRequestBeautified = XmlUtil.BeautifyXml(samlRequest),
                SamlRequestDecoded = samlRequest,
                RelayStateDecoded = relayState,
                SignatureStatusName = SignUtil.FormatStatus(signatureStatus)
            });
        }
Exemplo n.º 2
0
        public EAuthResponseViewModel GetResponseAsync(string requestId)
        {
            //ToDo parse ResponseSaml
            //string samlResponse = eAuth.ResponseSaml;
            string samlResponse = string.Empty;

            // Отговорът би трябвало да е подписан със сертификат за еАвт на физически лица
            // с thumbprint "16ebe0544fbd2f9295b3b49a32587614db37b444" (bgEgovEAuthenticatorSigning.cer).
            SignUtil.Status signatureStatus = SignUtil.Status.Invalid;
            XmlDocument     doc             = new XmlDocument {
                PreserveWhitespace = true
            };

            try
            {
                doc.LoadXml(samlResponse);
                signatureStatus = SignUtil.ValidateXmlDocument(doc);
            }
            catch
            {
            }

            // TODO: Всички тези детайли имат смисъл само за debug екран. Да се орежат за масовата употреба.
            return(new EAuthResponseViewModel
            {
                //SamlResponseBeautified = XmlUtil.BeautifyXml(doc.OuterXml),
                //SamlResponse = samlResponse,
                //RelayState = eAuth.RelayState,
                //SignatureStatusCode = signatureStatus.ToString(),
                //SignatureStatusName = SignUtil.FormatStatus(signatureStatus),
                //Error = eAuth.Error,
                //PidTypeCode = eAuth.PidTypeCode,
                //PersonIdentifier = eAuth.PersonIdentifier,
                //PersonNamesLatin = eAuth.PersonName,
                //Email = eAuth.Email,
                //Phone = eAuth.Phone,
                //ExpirationDateTime = eAuth.ExpirationDateTime
            });
        }