Пример #1
0
        bool IExtensionResponse.Deserialize(IDictionary <string, string> fields, DotNetOpenId.RelyingParty.IAuthenticationResponse response, string typeUri)
        {
            if (fields == null)
            {
                return(false);
            }
            if (!fields.ContainsKey(Constants.ResponseParameters.AuthPolicies))
            {
                return(false);
            }

            ActualPolicies.Clear();
            string[] actualPolicies = fields[Constants.ResponseParameters.AuthPolicies].Split(' ');
            foreach (string policy in actualPolicies)
            {
                if (policy.Length > 0 && policy != AuthenticationPolicies.None)
                {
                    ActualPolicies.Add(policy);
                }
            }

            AuthenticationTimeUtc = null;
            string authTime;

            if (fields.TryGetValue(Constants.ResponseParameters.AuthTime, out authTime))
            {
                DateTime authDateTime;
                if (DateTime.TryParse(authTime, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out authDateTime) &&
                    authDateTime.Kind == DateTimeKind.Utc)                       // may be unspecified per our option above
                {
                    AuthenticationTimeUtc = authDateTime;
                }
                else
                {
                    Logger.ErrorFormat("Invalid format for {0} parameter: {1}",
                                       Constants.ResponseParameters.AuthTime, authTime);
                }
            }

            AssuranceLevels.Clear();
            AliasManager authLevelAliases = PolicyRequest.FindIncomingAliases(fields);

            foreach (string authLevelAlias in authLevelAliases.Aliases)
            {
                string authValue;
                if (fields.TryGetValue(Constants.ResponseParameters.AuthLevelAliasPrefix + authLevelAlias, out authValue))
                {
                    string authLevelType = authLevelAliases.ResolveAlias(authLevelAlias);
                    AssuranceLevels[authLevelType] = authValue;
                }
            }

            return(true);
        }
Пример #2
0
 /// <summary>
 /// Gets a hash code for this object.
 /// </summary>
 public override int GetHashCode()
 {
     return(ActualPolicies.GetHashCode());
 }