protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
        {
            try
            {
                writer.WriteStartElement("RequestSecurityTokenResponse", Constants.WstNamespace);

                // RequestedSecurityToken
                writer.WriteStartElement("RequestedSecurityToken", Constants.WstNamespace);

                serializer.WriteToken(writer, res.RequestedSecurityToken);

                writer.WriteEndElement();

                /*
                 *                  // Entropy
                 *                  writer.WriteStartElement ("Entropy", Constants.WstNamespace);
                 *                  // FIXME: keep generated key
                 *                  serializer.WriteToken (writer,
                 *                          new BinarySecretSecurityToken (Rijndael.Create ().Key));
                 *                  writer.WriteEndElement ();
                 */

                writer.WriteEndElement();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw;
            }
        }
Пример #2
0
        protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion)
        {
            SecurityTokenSerializer defaultInstance = SimpleWebSecurityTokenSerializer.DefaultInstance;

            if (this.token != null && defaultInstance.CanWriteToken(this.token))
            {
                defaultInstance.WriteToken(writer, this.token);
            }
        }
Пример #3
0
        protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion version)
        {
            // FIXME: it should use XmlDictionaryWriter that CanCanonicalize the output (which is not possible in any built-in writer types, so we'll have to hack it).

            foreach (object obj in Contents)
            {
                if (obj is WsuTimestamp)
                {
                    WsuTimestamp ts = (WsuTimestamp)obj;
                    ts.WriteTo(writer);
                }
                else if (obj is SecurityToken)
                {
                    serializer.WriteToken(writer, (SecurityToken)obj);
                }
                else if (obj is EncryptedKey)
                {
                    ((EncryptedKey)obj).GetXml().WriteTo(writer);
                }
                else if (obj is ReferenceList)
                {
                    writer.WriteStartElement("ReferenceList", EncryptedXml.XmlEncNamespaceUrl);
                    foreach (EncryptedReference er in (ReferenceList)obj)
                    {
                        er.GetXml().WriteTo(writer);
                    }
                    writer.WriteEndElement();
                }
                else if (obj is EncryptedData)
                {
                    ((EncryptedData)obj).GetXml().WriteTo(writer);
                }
                else if (obj is Signature)
                {
                    ((Signature)obj).GetXml().WriteTo(writer);
                }
                else if (obj is Wss11SignatureConfirmation)
                {
                    Wss11SignatureConfirmation sc = (Wss11SignatureConfirmation)obj;
                    writer.WriteStartElement("k", "SignatureConfirmation", Constants.Wss11Namespace);
                    writer.WriteAttributeString("u", "Id", Constants.WsuNamespace, sc.Id);
                    writer.WriteAttributeString("Value", sc.Value);
                    writer.WriteEndElement();
                }
                else
                {
                    throw new ArgumentException(String.Format("Unrecognized header item {0}", obj ?? "(null)"));
                }
            }
        }
Пример #4
0
        void WriteToken(XmlWriter xmlWriter, SecurityToken token, string usage)
        {
            SecurityTokenHandlerCollection tokenHandlerCollection = null;

            if (this.tokenHandlerCollectionManager.ContainsKey(usage))
            {
                tokenHandlerCollection = this.tokenHandlerCollectionManager[usage];
            }
            else
            {
                tokenHandlerCollection = this.tokenHandlerCollectionManager[SecurityTokenHandlerCollectionManager.Usage.Default];
            }

            if (tokenHandlerCollection != null && tokenHandlerCollection.CanWriteToken(token))
            {
                tokenHandlerCollection.WriteToken(xmlWriter, token);
            }
            else
            {
                SecurityTokenSerializer.WriteToken(xmlWriter, token);
            }
        }
Пример #5
0
        // it only supports negotiation so far ...
        protected override void OnWriteBodyContents(XmlDictionaryWriter w)
        {
            string ns  = Constants.WstNamespace;
            string nsu = Constants.WsuNamespace;

            w.WriteStartElement("t", "RequestSecurityTokenResponse", ns);
            w.WriteXmlnsAttribute("u", nsu);
            w.WriteAttributeString("Context", Context);
            if (Authenticator != null)
            {
                w.WriteStartElement("t", "Authenticator", ns);
                w.WriteStartElement("t", "CombinedHash", ns);
                w.WriteBase64(Authenticator, 0, Authenticator.Length);
                w.WriteEndElement();
                w.WriteEndElement();
            }
            if (TokenType != null)
            {
                w.WriteElementString("t", "TokenType", ns, TokenType);
            }
            if (RequestedSecurityToken != null)
            {
                w.WriteStartElement("t", "RequestedSecurityToken", ns);
                serializer.WriteToken(w, RequestedSecurityToken);
                w.WriteEndElement();
            }
            if (RequestedAttachedReference != null)
            {
                w.WriteStartElement("t", "RequestedAttachedReference", ns);
                serializer.WriteKeyIdentifierClause(w, RequestedAttachedReference);
                w.WriteEndElement();
            }
            if (RequestedUnattachedReference != null)
            {
                w.WriteStartElement("t", "RequestedUnattachedReference", ns);
                serializer.WriteKeyIdentifierClause(w, RequestedUnattachedReference);
                w.WriteEndElement();
            }
            if (RequestedProofToken != null)
            {
                w.WriteStartElement("t", "RequestedProofToken", ns);
                if (RequestedProofToken is SecurityToken)
                {
                    serializer.WriteToken(w, (SecurityToken)RequestedProofToken);
                }
                else if (RequestedProofToken is SecurityKeyIdentifierClause)
                {
                    serializer.WriteKeyIdentifierClause(w, (SecurityKeyIdentifierClause)RequestedProofToken);
                }
                else
                {
                    string ens = EncryptedXml.XmlEncNamespaceUrl;
                    w.WriteStartElement("e", "EncryptedKey", ens);
                    w.WriteStartElement("EncryptionMethod", ens);
                    w.WriteAttributeString("Algorithm", Constants.WstTlsnegoProofTokenType);
                    w.WriteEndElement();
                    w.WriteStartElement("CipherData", ens);
                    w.WriteStartElement("CipherValue", ens);
                    byte [] base64 = (byte [])RequestedProofToken;
                    w.WriteBase64(base64, 0, base64.Length);
                    w.WriteEndElement();
                    w.WriteEndElement();
                    w.WriteEndElement();
                }
                w.WriteEndElement();
            }
            if (Lifetime != null)
            {
                w.WriteStartElement("t", "Lifetime", ns);
                if (Lifetime.Created != DateTime.MinValue)
                {
                    w.WriteElementString("Created", nsu, XmlConvert.ToString(Lifetime.Created.ToUniversalTime(), Constants.LifetimeFormat));
                }
                if (Lifetime.Expires != DateTime.MaxValue)
                {
                    w.WriteElementString("Expires", nsu, XmlConvert.ToString(Lifetime.Expires.ToUniversalTime(), Constants.LifetimeFormat));
                }
                w.WriteEndElement();
            }
            //w.WriteElementString ("t", "KeySize", ns, XmlConvert.ToString (KeySize));
            if (BinaryExchange != null)
            {
                BinaryExchange.WriteTo(w);
            }
            w.WriteEndElement();
        }
 protected override void WriteTokenCore(XmlWriter writer, SecurityToken token)
 {
     serializer.WriteToken(writer, token);
 }