コード例 #1
0
ファイル: AXUtilities.cs プロジェクト: thild/dotnetopenid
        /// <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]);
                }
            }
        }
コード例 #2
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);
                }
            }
        }
コード例 #3
0
ファイル: FetchRequest.cs プロジェクト: thild/dotnetopenid
        /// <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;
        }
コード例 #4
0
ファイル: FetchRequest.cs プロジェクト: Belxjander/Asuna
		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;
		}
コード例 #5
0
        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);
        }
コード例 #6
0
        /// <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));
        }
コード例 #7
0
ファイル: FetchResponse.cs プロジェクト: Belxjander/Asuna
		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]);
				}
			}
		}
コード例 #8
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);
        }
コード例 #9
0
/// <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;
}
コード例 #10
0
ファイル: PolicyResponse.cs プロジェクト: jcp-xx/dotnetopenid
/// <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);
                }
            }
}
コード例 #11
0
ファイル: AXUtilities.cs プロジェクト: vrushalid/dotnetopenid
        /// <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]);
                }
            }
        }
コード例 #12
0
ファイル: PolicyResponse.cs プロジェクト: Belxjander/Asuna
		#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);
				}
			}
コード例 #13
0
/// <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);
}