public virtual ResourceAccessFailureResponse ReadAuthenticationHeader(string authenticateHeader, Uri resourceUri)
        {
            if (string.IsNullOrEmpty(authenticateHeader))
            {
                throw new ArgumentNullException("authenticateHeader");
            }
            if (resourceUri == null)
            {
                throw new ArgumentNullException("resourceUri");
            }

            ResourceAccessFailureResponse response = null;
            string expectedAuthType = "Bearer";
            string authType         = authenticateHeader.Split(new char[] { ' ' }, 2)[0];

            if (string.IsNullOrEmpty(authType))
            {
                throw new OAuthMessageSerializationException(string.Format(Resources.ID3741, authType));
            }

            Dictionary <string, string> keyValuePairs = new Dictionary <string, string>();

            if (authType.Contains(expectedAuthType))
            {
                response           = new ResourceAccessFailureResponse(resourceUri);
                authenticateHeader = authenticateHeader.Remove(0, authType.Length);
                authenticateHeader = authenticateHeader.TrimStart(new char[] { ' ' });
                if (!string.IsNullOrEmpty(authenticateHeader))
                {
                    string[] parameters = authenticateHeader.Split(new string[] { "\", " }, System.StringSplitOptions.None);
                    for (int i = 0; i < parameters.Length; i++)
                    {
                        string   entry            = parameters[i];
                        string   splitAtEqualSign = "=\"";
                        string[] pairs            = entry.Split(new string[] { splitAtEqualSign }, 2, System.StringSplitOptions.None);
                        if (pairs.Length != 2)
                        {
                            throw new OAuthMessageSerializationException(string.Format(Resources.ID3741, authType));
                        }
                        if (i == parameters.Length - 1 && pairs[1][pairs[1].Length - 1] == '"')
                        {
                            pairs[1] = pairs[1].Remove(pairs[1].Length - 1, 1);
                        }
                        keyValuePairs.Add(pairs[0], pairs[1]);
                    }
                    foreach (var parameter in keyValuePairs)
                    {
                        response.Parameters.Add(parameter.Key, parameter.Value);
                    }
                    response.Validate();
                }
            }

            return(response);
        }
        public virtual ResourceAccessFailureResponse ReadAuthenticationHeader(string authenticateHeader, Uri resourceUri)
        {
            if (string.IsNullOrEmpty(authenticateHeader))
            {
                throw new ArgumentNullException("authenticateHeader");
            }
            if (resourceUri == null)
            {
                throw new ArgumentNullException("resourceUri");
            }

            ResourceAccessFailureResponse response = null;
            string expectedAuthType = "Bearer";
            string authType = authenticateHeader.Split(new char[] { ' ' }, 2)[0];

            if (string.IsNullOrEmpty(authType))
            {
                throw new OAuthMessageSerializationException(string.Format(Resources.ID3741, authType));
            }

            Dictionary<string,string> keyValuePairs = new Dictionary<string,string>();
            if (authType.Contains(expectedAuthType))
            {
                response = new ResourceAccessFailureResponse(resourceUri);
                authenticateHeader = authenticateHeader.Remove(0, authType.Length);
                authenticateHeader = authenticateHeader.TrimStart(new char[] { ' ' });
                if (!string.IsNullOrEmpty(authenticateHeader))
                {
                    string[] parameters = authenticateHeader.Split(new string[] { "\", " }, System.StringSplitOptions.None);
                    for (int i = 0; i < parameters.Length; i++)
                    {
                        string entry = parameters[i];
                        string splitAtEqualSign = "=\"";
                        string[] pairs = entry.Split(new string[] { splitAtEqualSign }, 2, System.StringSplitOptions.None);
                        if (pairs.Length != 2)
                        {
                            throw new OAuthMessageSerializationException(string.Format(Resources.ID3741, authType));
                        }
                        if (i == parameters.Length - 1 && pairs[1][pairs[1].Length - 1] == '"')
                        {
                            pairs[1] = pairs[1].Remove(pairs[1].Length - 1, 1);
                        }
                        keyValuePairs.Add(pairs[0], pairs[1]);
                    }
                    foreach (var parameter in keyValuePairs)
                    {
                        response.Parameters.Add(parameter.Key, parameter.Value);
                    }
                    response.Validate();
                }
            }

            return response;
        }