public void AfterReceiveReply(ref Message reply, object correlationState)
        {
            XmlDocument request = correlationState as XmlDocument;

            if (!reply.IsFault)
            {
                MessageBuffer msgbuf    = reply.CreateBufferedCopy(int.MaxValue);
                var           signcheck = new SealSignedXml(msgbuf.AsStream());
                if (!signcheck.CheckEnvelopeSignature())
                {
                    throw new Exception("Response signature Error");
                }
                reply = msgbuf.CreateMessage();
            }
        }
Esempio n. 2
0
        public static IdCard SignIn(OioWsTrustRequest request, string endpointAdr)
        {
            var ss = WebPost(request.XAssertion, endpointAdr);

            var fault = ss.Element(NameSpaces.xsoap + "Body")?.Element(NameSpaces.xsoap + "Fault");

            if (fault != null)
            {
                throw new FaultException(new FaultReason(fault.Element("faultstring")?.Value), new FaultCode(fault.Element("faultcode")?.Value), null);
            }
            var signed = new SealSignedXml(ss);

            if (!signed.CheckEnvelopeSignature())
            {
                throw new FaultException(new FaultReason("Envelope Signature error"), new FaultCode("STS"), null);
            }
            var idCardModelBuilder = new IdCardModelBuilder();

            return(idCardModelBuilder.BuildModel(ss.Descendants(NameSpaces.xsaml + "Assertion").First()));
        }