/// <summary> /// Serializes a set of attribute values to a dictionary of fields to send in the message. /// </summary> /// <param name="fields">The dictionary to fill with serialized attributes.</param> /// <param name="attributes">The attributes.</param> internal static void SerializeAttributes(IDictionary <string, string> fields, IEnumerable <AttributeValues> attributes) { Contract.Requires <ArgumentNullException>(fields != null); Contract.Requires <ArgumentNullException>(attributes != null); AliasManager aliasManager = new AliasManager(); foreach (var att in attributes) { string alias = aliasManager.GetAlias(att.TypeUri); fields.Add("type." + alias, att.TypeUri); if (att.Values == null) { continue; } if (att.Values.Count != 1) { fields.Add("count." + alias, att.Values.Count.ToString(CultureInfo.InvariantCulture)); for (int i = 0; i < att.Values.Count; i++) { fields.Add(string.Format(CultureInfo.InvariantCulture, "value.{0}.{1}", alias, i + 1), att.Values[i]); } } else { fields.Add("value." + alias, att.Values[0]); } } }
/// <summary> /// Called when the message is about to be transmitted, /// before it passes through the channel binding elements. /// </summary> void IMessageWithEvents.OnSending() { var extraData = ((IMessage)this).ExtraData; extraData.Clear(); this.actualPoliciesString = SerializePolicies(this.ActualPolicies); if (this.AssuranceLevels.Count > 0) { AliasManager aliases = new AliasManager(); aliases.AssignAliases(this.AssuranceLevels.Keys, Constants.AssuranceLevels.PreferredTypeUriToAliasMap); // Add a definition for each Auth Level Type alias. foreach (string alias in aliases.Aliases) { extraData.Add(Constants.AuthLevelNamespaceDeclarationPrefix + alias, aliases.ResolveAlias(alias)); } // Now use the aliases for those type URIs to list the individual values. foreach (var pair in this.AssuranceLevels) { extraData.Add(AuthLevelAliasPrefix + aliases.GetAlias(pair.Key), pair.Value); } } }
/// <summary> /// Called when the message is about to be transmitted, /// before it passes through the channel binding elements. /// </summary> void IMessageWithEvents.OnSending() { var fields = ((IMessage)this).ExtraData; fields.Clear(); List <string> requiredAliases = new List <string>(), optionalAliases = new List <string>(); AliasManager aliasManager = new AliasManager(); foreach (var att in this.attributes) { string alias = aliasManager.GetAlias(att.TypeUri); // define the alias<->typeUri mapping fields.Add("type." + alias, att.TypeUri); // set how many values the relying party wants max fields.Add("count." + alias, att.Count.ToString(CultureInfo.InvariantCulture)); if (att.IsRequired) { requiredAliases.Add(alias); } else { optionalAliases.Add(alias); } } // Set optional/required lists this.OptionalAliases = optionalAliases.Count > 0 ? string.Join(",", optionalAliases.ToArray()) : null; this.RequiredAliases = requiredAliases.Count > 0 ? string.Join(",", requiredAliases.ToArray()) : null; }
IDictionary<string, string> IExtensionRequest.Serialize(RelyingParty.IAuthenticationRequest authenticationRequest) { var fields = new Dictionary<string, string> { { "mode", Mode }, }; if (UpdateUrl != null) fields.Add("update_url", UpdateUrl.AbsoluteUri); List<string> requiredAliases = new List<string>(), optionalAliases = new List<string>(); AliasManager aliasManager = new AliasManager(); foreach (var att in attributesRequested) { string alias = aliasManager.GetAlias(att.TypeUri); // define the alias<->typeUri mapping fields.Add("type." + alias, att.TypeUri); // set how many values the relying party wants max fields.Add("count." + alias, att.Count.ToString(CultureInfo.InvariantCulture)); if (att.IsRequired) requiredAliases.Add(alias); else optionalAliases.Add(alias); } // Set optional/required lists if (optionalAliases.Count > 0) fields.Add("if_available", string.Join(",", optionalAliases.ToArray())); if (requiredAliases.Count > 0) fields.Add("required", string.Join(",", requiredAliases.ToArray())); return fields; }
IDictionary <string, string> IExtensionResponse.Serialize(DotNetOpenId.Provider.IRequest authenticationRequest) { var fields = new Dictionary <string, string>(); fields.Add(Constants.ResponseParameters.AuthPolicies, SerializePolicies(ActualPolicies)); if (AuthenticationTimeUtc.HasValue) { fields.Add(Constants.ResponseParameters.AuthTime, AuthenticationTimeUtc.Value.ToUniversalTime().ToString(PermissibleDateTimeFormats[0], CultureInfo.InvariantCulture)); } if (AssuranceLevels.Count > 0) { AliasManager aliases = new AliasManager(); aliases.AssignAliases(AssuranceLevels.Keys, Constants.AuthenticationLevels.PreferredTypeUriToAliasMap); // Add a definition for each Auth Level Type alias. foreach (string alias in aliases.Aliases) { fields.Add(Constants.AuthLevelNamespaceDeclarationPrefix + alias, aliases.ResolveAlias(alias)); } // Now use the aliases for those type URIs to list the individual values. foreach (var pair in AssuranceLevels) { fields.Add(Constants.ResponseParameters.AuthLevelAliasPrefix + aliases.GetAlias(pair.Key), pair.Value); } } return(fields); }
/// <summary> /// Serializes the auth levels to a list of aliases. /// </summary> /// <param name="preferredAuthLevelTypes">The preferred auth level types.</param> /// <param name="aliases">The alias manager.</param> /// <returns>A space-delimited list of aliases.</returns> private static string SerializeAuthLevels(IList <string> preferredAuthLevelTypes, AliasManager aliases) { var aliasList = new List <string>(); foreach (string typeUri in preferredAuthLevelTypes) { aliasList.Add(aliases.GetAlias(typeUri)); } return(PapeUtilities.ConcatenateListOfElements(aliasList)); }
internal static void SerializeAttributes(Dictionary<string, string> fields, IEnumerable<AttributeValues> attributes) { Debug.Assert(fields != null && attributes != null); AliasManager aliasManager = new AliasManager(); foreach (var att in attributes) { string alias = aliasManager.GetAlias(att.TypeUri); fields.Add("type." + alias, att.TypeUri); if (att.Values == null) continue; if (att.Values.Count != 1) { fields.Add("count." + alias, att.Values.Count.ToString(CultureInfo.InvariantCulture)); for (int i = 0; i < att.Values.Count; i++) { fields.Add(string.Format(CultureInfo.InvariantCulture, "value.{0}.{1}", alias, i + 1), att.Values[i]); } } else { fields.Add("value." + alias, att.Values[0]); } } }
IDictionary <string, string> IExtensionRequest.Serialize(RelyingParty.IAuthenticationRequest authenticationRequest) { var fields = new Dictionary <string, string> { { "mode", Mode }, }; if (UpdateUrl != null) { fields.Add("update_url", UpdateUrl.AbsoluteUri); } List <string> requiredAliases = new List <string>(), optionalAliases = new List <string>(); AliasManager aliasManager = new AliasManager(); foreach (var att in attributesRequested) { string alias = aliasManager.GetAlias(att.TypeUri); // define the alias<->typeUri mapping fields.Add("type." + alias, att.TypeUri); // set how many values the relying party wants max fields.Add("count." + alias, att.Count.ToString(CultureInfo.InvariantCulture)); if (att.IsRequired) { requiredAliases.Add(alias); } else { optionalAliases.Add(alias); } } // Set optional/required lists if (optionalAliases.Count > 0) { fields.Add("if_available", string.Join(",", optionalAliases.ToArray())); } if (requiredAliases.Count > 0) { fields.Add("required", string.Join(",", requiredAliases.ToArray())); } return(fields); }
/// <summary> /// Called when the message is about to be transmitted, /// before it passes through the channel binding elements. /// </summary> void IMessageWithEvents.OnSending() { var fields = ((IMessage)this).ExtraData; fields.Clear(); List<string> requiredAliases = new List<string>(), optionalAliases = new List<string>(); AliasManager aliasManager = new AliasManager(); foreach (var att in this.attributes) { string alias = aliasManager.GetAlias(att.TypeUri); // define the alias<->typeUri mapping fields.Add("type." + alias, att.TypeUri); // set how many values the relying party wants max fields.Add("count." + alias, att.Count.ToString(CultureInfo.InvariantCulture)); if (att.IsRequired) { requiredAliases.Add(alias); } else { optionalAliases.Add(alias); } } // Set optional/required lists this.OptionalAliases = optionalAliases.Count > 0 ? string.Join(",", optionalAliases.ToArray()) : null; this.RequiredAliases = requiredAliases.Count > 0 ? string.Join(",", requiredAliases.ToArray()) : null; }
/// <summary> /// Serializes a set of attribute values to a dictionary of fields to send in the message. /// </summary> /// <param name="fields">The dictionary to fill with serialized attributes.</param> /// <param name="attributes">The attributes.</param> internal static void SerializeAttributes(IDictionary<string, string> fields, IEnumerable<AttributeValues> attributes) { ErrorUtilities.VerifyArgumentNotNull(fields, "fields"); ErrorUtilities.VerifyArgumentNotNull(attributes, "attributes"); AliasManager aliasManager = new AliasManager(); foreach (var att in attributes) { string alias = aliasManager.GetAlias(att.TypeUri); fields.Add("type." + alias, att.TypeUri); if (att.Values == null) { continue; } if (att.Values.Count != 1) { fields.Add("count." + alias, att.Values.Count.ToString(CultureInfo.InvariantCulture)); for (int i = 0; i < att.Values.Count; i++) { fields.Add(string.Format(CultureInfo.InvariantCulture, "value.{0}.{1}", alias, i + 1), att.Values[i]); } } else { fields.Add("value." + alias, att.Values[0]); } } }
#region IExtensionResponse Members IDictionary<string, string> IExtensionResponse.Serialize(DotNetOpenId.Provider.IRequest authenticationRequest) { var fields = new Dictionary<string, string>(); fields.Add(Constants.ResponseParameters.AuthPolicies, SerializePolicies(ActualPolicies)); if (AuthenticationTimeUtc.HasValue) { fields.Add(Constants.ResponseParameters.AuthTime, AuthenticationTimeUtc.Value.ToUniversalTime().ToString(PermissibleDateTimeFormats[0], CultureInfo.InvariantCulture)); } if (AssuranceLevels.Count > 0) { AliasManager aliases = new AliasManager(); aliases.AssignAliases(AssuranceLevels.Keys, Constants.AuthenticationLevels.PreferredTypeUriToAliasMap); // Add a definition for each Auth Level Type alias. foreach (string alias in aliases.Aliases) { fields.Add(Constants.AuthLevelNamespaceDeclarationPrefix + alias, aliases.ResolveAlias(alias)); } // Now use the aliases for those type URIs to list the individual values. foreach (var pair in AssuranceLevels) { fields.Add(Constants.ResponseParameters.AuthLevelAliasPrefix + aliases.GetAlias(pair.Key), pair.Value); } }
/// <summary> /// Serializes the auth levels to a list of aliases. /// </summary> /// <param name="preferredAuthLevelTypes">The preferred auth level types.</param> /// <param name="aliases">The alias manager.</param> /// <returns>A space-delimited list of aliases.</returns> private static string SerializeAuthLevels(IList<string> preferredAuthLevelTypes, AliasManager aliases) { var aliasList = new List<string>(); foreach (string typeUri in preferredAuthLevelTypes) { aliasList.Add(aliases.GetAlias(typeUri)); } return PapeUtilities.ConcatenateListOfElements(aliasList); }