public void DefaultValues () { SamlAuthorityBinding a = new SamlAuthorityBinding (); Assert.IsNull (a.AuthorityKind, "#1"); Assert.IsNull (a.Binding, "#2"); Assert.IsNull (a.Location, "#3"); }
public override void ReadXml(XmlDictionaryReader reader, SamlSerializer samlSerializer, SecurityTokenSerializer keyInfoSerializer, SecurityTokenResolver outOfBandTokenResolver) { if (reader == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("reader")); if (samlSerializer == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("samlSerializer")); #pragma warning suppress 56506 // samlSerializer.DictionaryManager is never null. SamlDictionary dictionary = samlSerializer.DictionaryManager.SamlDictionary; string authInstance = reader.GetAttribute(dictionary.AuthenticationInstant, null); if (string.IsNullOrEmpty(authInstance)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(SR.GetString(SR.SAMLAuthenticationStatementMissingAuthenticationInstanceOnRead))); this.authenticationInstant = DateTime.ParseExact( authInstance, SamlConstants.AcceptedDateTimeFormats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None).ToUniversalTime(); this.authenticationMethod = reader.GetAttribute(dictionary.AuthenticationMethod, null); if (string.IsNullOrEmpty(this.authenticationMethod)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(SR.GetString(SR.SAMLAuthenticationStatementMissingAuthenticationMethodOnRead))); reader.MoveToContent(); reader.Read(); if (reader.IsStartElement(dictionary.Subject, dictionary.Namespace)) { SamlSubject subject = new SamlSubject(); subject.ReadXml(reader, samlSerializer, keyInfoSerializer, outOfBandTokenResolver); base.SamlSubject = subject; } else { // Subject is a required element for a Authentication Statement clause. throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(SR.GetString(SR.SAMLAuthenticationStatementMissingSubject))); } if (reader.IsStartElement(dictionary.SubjectLocality, dictionary.Namespace)) { this.dnsAddress = reader.GetAttribute(dictionary.SubjectLocalityDNSAddress, null); this.ipAddress = reader.GetAttribute(dictionary.SubjectLocalityIPAddress, null); if (reader.IsEmptyElement) { reader.MoveToContent(); reader.Read(); } else { reader.MoveToContent(); reader.Read(); reader.ReadEndElement(); } } while (reader.IsStartElement()) { if (reader.IsStartElement(dictionary.AuthorityBinding, dictionary.Namespace)) { SamlAuthorityBinding binding = new SamlAuthorityBinding(); binding.ReadXml(reader, samlSerializer, keyInfoSerializer, outOfBandTokenResolver); this.authorityBindings.Add(binding); } else { // We do not understand this element. throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(SR.GetString(SR.SAMLBadSchema, dictionary.AuthenticationStatement))); } } reader.MoveToContent(); reader.ReadEndElement(); }
public override void ReadXml(XmlDictionaryReader reader, SamlSerializer samlSerializer, SecurityTokenSerializer keyInfoSerializer, SecurityTokenResolver outOfBandTokenResolver) { if (reader == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("reader")); } if (samlSerializer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("samlSerializer")); } SamlDictionary samlDictionary = samlSerializer.DictionaryManager.SamlDictionary; string attribute = reader.GetAttribute(samlDictionary.AuthenticationInstant, null); if (string.IsNullOrEmpty(attribute)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(System.IdentityModel.SR.GetString("SAMLAuthenticationStatementMissingAuthenticationInstanceOnRead"))); } this.authenticationInstant = DateTime.ParseExact(attribute, SamlConstants.AcceptedDateTimeFormats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None).ToUniversalTime(); this.authenticationMethod = reader.GetAttribute(samlDictionary.AuthenticationMethod, null); if (string.IsNullOrEmpty(this.authenticationMethod)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(System.IdentityModel.SR.GetString("SAMLAuthenticationStatementMissingAuthenticationMethodOnRead"))); } reader.MoveToContent(); reader.Read(); if (!reader.IsStartElement(samlDictionary.Subject, samlDictionary.Namespace)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(System.IdentityModel.SR.GetString("SAMLAuthenticationStatementMissingSubject"))); } SamlSubject subject = new SamlSubject(); subject.ReadXml(reader, samlSerializer, keyInfoSerializer, outOfBandTokenResolver); base.SamlSubject = subject; if (reader.IsStartElement(samlDictionary.SubjectLocality, samlDictionary.Namespace)) { this.dnsAddress = reader.GetAttribute(samlDictionary.SubjectLocalityDNSAddress, null); this.ipAddress = reader.GetAttribute(samlDictionary.SubjectLocalityIPAddress, null); if (reader.IsEmptyElement) { reader.MoveToContent(); reader.Read(); } else { reader.MoveToContent(); reader.Read(); reader.ReadEndElement(); } } while (reader.IsStartElement()) { if (!reader.IsStartElement(samlDictionary.AuthorityBinding, samlDictionary.Namespace)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(System.IdentityModel.SR.GetString("SAMLBadSchema", new object[] { samlDictionary.AuthenticationStatement }))); } SamlAuthorityBinding item = new SamlAuthorityBinding(); item.ReadXml(reader, samlSerializer, keyInfoSerializer, outOfBandTokenResolver); this.authorityBindings.Add(item); } reader.MoveToContent(); reader.ReadEndElement(); }
public override void ReadXml(XmlDictionaryReader reader, SamlSerializer samlSerializer, SecurityTokenSerializer keyInfoSerializer, SecurityTokenResolver outOfBandTokenResolver) { if (reader == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("reader")); } if (samlSerializer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("samlSerializer")); } SamlDictionary samlDictionary = samlSerializer.DictionaryManager.SamlDictionary; string attribute = reader.GetAttribute(samlDictionary.AuthenticationInstant, null); if (string.IsNullOrEmpty(attribute)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(System.IdentityModel.SR.GetString("SAMLAuthenticationStatementMissingAuthenticationInstanceOnRead"))); } this.authenticationInstant = DateTime.ParseExact(attribute, SamlConstants.AcceptedDateTimeFormats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None).ToUniversalTime(); this.authenticationMethod = reader.GetAttribute(samlDictionary.AuthenticationMethod, null); if (string.IsNullOrEmpty(this.authenticationMethod)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(System.IdentityModel.SR.GetString("SAMLAuthenticationStatementMissingAuthenticationMethodOnRead"))); } reader.MoveToContent(); reader.Read(); if (!reader.IsStartElement(samlDictionary.Subject, samlDictionary.Namespace)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(System.IdentityModel.SR.GetString("SAMLAuthenticationStatementMissingSubject"))); } SamlSubject subject = new SamlSubject(); subject.ReadXml(reader, samlSerializer, keyInfoSerializer, outOfBandTokenResolver); base.SamlSubject = subject; if (reader.IsStartElement(samlDictionary.SubjectLocality, samlDictionary.Namespace)) { this.dnsAddress = reader.GetAttribute(samlDictionary.SubjectLocalityDNSAddress, null); this.ipAddress = reader.GetAttribute(samlDictionary.SubjectLocalityIPAddress, null); if (reader.IsEmptyElement) { reader.MoveToContent(); reader.Read(); } else { reader.MoveToContent(); reader.Read(); reader.ReadEndElement(); } } while (reader.IsStartElement()) { if (!reader.IsStartElement(samlDictionary.AuthorityBinding, samlDictionary.Namespace)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(System.IdentityModel.SR.GetString("SAMLBadSchema", new object[] { samlDictionary.AuthenticationStatement }))); } SamlAuthorityBinding item = new SamlAuthorityBinding(); item.ReadXml(reader, samlSerializer, keyInfoSerializer, outOfBandTokenResolver); this.authorityBindings.Add(item); } reader.MoveToContent(); reader.ReadEndElement(); }
public override void ReadXml(XmlDictionaryReader reader, SamlSerializer samlSerializer, SecurityTokenSerializer keyInfoSerializer, SecurityTokenResolver outOfBandTokenResolver) { if (reader == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("reader")); } if (samlSerializer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("samlSerializer")); } #pragma warning suppress 56506 // samlSerializer.DictionaryManager is never null. SamlDictionary dictionary = samlSerializer.DictionaryManager.SamlDictionary; string authInstance = reader.GetAttribute(dictionary.AuthenticationInstant, null); if (string.IsNullOrEmpty(authInstance)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(SR.GetString(SR.SAMLAuthenticationStatementMissingAuthenticationInstanceOnRead))); } this.authenticationInstant = DateTime.ParseExact( authInstance, SamlConstants.AcceptedDateTimeFormats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None).ToUniversalTime(); this.authenticationMethod = reader.GetAttribute(dictionary.AuthenticationMethod, null); if (string.IsNullOrEmpty(this.authenticationMethod)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(SR.GetString(SR.SAMLAuthenticationStatementMissingAuthenticationMethodOnRead))); } reader.MoveToContent(); reader.Read(); if (reader.IsStartElement(dictionary.Subject, dictionary.Namespace)) { SamlSubject subject = new SamlSubject(); subject.ReadXml(reader, samlSerializer, keyInfoSerializer, outOfBandTokenResolver); base.SamlSubject = subject; } else { // Subject is a required element for a Authentication Statement clause. throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(SR.GetString(SR.SAMLAuthenticationStatementMissingSubject))); } if (reader.IsStartElement(dictionary.SubjectLocality, dictionary.Namespace)) { this.dnsAddress = reader.GetAttribute(dictionary.SubjectLocalityDNSAddress, null); this.ipAddress = reader.GetAttribute(dictionary.SubjectLocalityIPAddress, null); if (reader.IsEmptyElement) { reader.MoveToContent(); reader.Read(); } else { reader.MoveToContent(); reader.Read(); reader.ReadEndElement(); } } while (reader.IsStartElement()) { if (reader.IsStartElement(dictionary.AuthorityBinding, dictionary.Namespace)) { SamlAuthorityBinding binding = new SamlAuthorityBinding(); binding.ReadXml(reader, samlSerializer, keyInfoSerializer, outOfBandTokenResolver); this.authorityBindings.Add(binding); } else { // We do not understand this element. throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(SR.GetString(SR.SAMLBadSchema, dictionary.AuthenticationStatement))); } } reader.MoveToContent(); reader.ReadEndElement(); }
/// <summary> /// Serialize a SamlAuthorityBinding. /// </summary> /// <param name="writer">XmlWriter to serialize the SamlAuthorityBinding</param> /// <param name="authorityBinding">SamlAuthoriyBinding to be serialized.</param> protected virtual void WriteAuthorityBinding(XmlWriter writer, SamlAuthorityBinding authorityBinding) { if (writer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("writer"); } if (authorityBinding == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("statement"); } writer.WriteStartElement(SamlConstants.Prefix, SamlConstants.ElementNames.AuthorityBinding, SamlConstants.Namespace); string prefix = null; if (!string.IsNullOrEmpty(authorityBinding.AuthorityKind.Namespace)) { writer.WriteAttributeString(String.Empty, SamlConstants.AttributeNames.NamespaceAttributePrefix, null, authorityBinding.AuthorityKind.Namespace); prefix = writer.LookupPrefix(authorityBinding.AuthorityKind.Namespace); } writer.WriteStartAttribute(SamlConstants.AttributeNames.AuthorityKind, null); if (string.IsNullOrEmpty(prefix)) { writer.WriteString(authorityBinding.AuthorityKind.Name); } else { writer.WriteString(prefix + ":" + authorityBinding.AuthorityKind.Name); } writer.WriteEndAttribute(); writer.WriteAttributeString(SamlConstants.AttributeNames.Location, null, authorityBinding.Location); writer.WriteAttributeString(SamlConstants.AttributeNames.Binding, null, authorityBinding.Binding); writer.WriteEndElement(); }
/// <summary> /// Read the saml:AuthorityBinding element. /// </summary> /// <param name="reader">XmlReader positioned at the saml:AuthorityBinding element.</param> /// <returns>SamlAuthorityBinding</returns> /// <exception cref="ArgumentNullException">The inpur parameter 'reader' is null.</exception> /// <exception cref="XmlException">XmlReader is not positioned at a saml:AuthorityBinding element or /// contains a unrecognized or invalid child element.</exception> protected virtual SamlAuthorityBinding ReadAuthorityBinding(XmlReader reader) { if (reader == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("reader"); } SamlAuthorityBinding authorityBinding = new SamlAuthorityBinding(); string authKind = reader.GetAttribute(SamlConstants.AttributeNames.AuthorityKind, null); if (string.IsNullOrEmpty(authKind)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.ID4200))); } string[] authKindParts = authKind.Split(':'); if (authKindParts.Length > 2) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.ID4201, authKind))); } string localName; string prefix; string nameSpace; if (authKindParts.Length == 2) { prefix = authKindParts[0]; localName = authKindParts[1]; } else { prefix = String.Empty; localName = authKindParts[0]; } nameSpace = reader.LookupNamespace(prefix); authorityBinding.AuthorityKind = new XmlQualifiedName(localName, nameSpace); authorityBinding.Binding = reader.GetAttribute(SamlConstants.AttributeNames.Binding, null); if (string.IsNullOrEmpty(authorityBinding.Binding)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.ID4202))); } authorityBinding.Location = reader.GetAttribute(SamlConstants.AttributeNames.Location, null); if (string.IsNullOrEmpty(authorityBinding.Location)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.ID4203))); } if (reader.IsEmptyElement) { reader.MoveToContent(); reader.Read(); } else { reader.MoveToContent(); reader.Read(); reader.ReadEndElement(); } return authorityBinding; }
public void SetBindingEmpty () { SamlAuthorityBinding a = new SamlAuthorityBinding (); a.Binding = String.Empty; }
public void SetLocationEmpty () { SamlAuthorityBinding a = new SamlAuthorityBinding (); a.Location = String.Empty; }
public void SetAuthorityKindEmptyName () { SamlAuthorityBinding a = new SamlAuthorityBinding (); a.AuthorityKind = XmlQualifiedName.Empty; }
public void WriteXml1 () { SamlAuthorityBinding a = new SamlAuthorityBinding (); a.AuthorityKind = new XmlQualifiedName ("local", "urn:ns"); a.Binding = "binding"; a.Location = "location"; StringWriter sw = new StringWriter (); using (XmlDictionaryWriter dw = CreateWriter (sw)) { a.WriteXml (dw, new SamlSerializer (), null); } Assert.AreEqual (String.Format ("<?xml version=\"1.0\" encoding=\"utf-16\"?><saml:AuthorityBinding xmlns=\"urn:ns\" AuthorityKind=\"local\" Location=\"location\" Binding=\"binding\" xmlns:saml=\"{0}\" />", SamlConstants.Namespace), sw.ToString ()); }
public void WriteXmlNoLocation () { SamlAuthorityBinding a = new SamlAuthorityBinding (); a.AuthorityKind = new XmlQualifiedName ("local", "urn:ns"); a.Binding = "binding"; StringWriter sw = new StringWriter (); using (XmlDictionaryWriter dw = CreateWriter (sw)) { a.WriteXml (dw, new SamlSerializer (), null); } }
public void WriteXmlNoAuthorityKind () { SamlAuthorityBinding a = new SamlAuthorityBinding (); a.Binding = "binding"; a.Location = "location"; StringWriter sw = new StringWriter (); using (XmlDictionaryWriter dw = CreateWriter (sw)) { a.WriteXml (dw, new SamlSerializer (), null); } }