Esempio n. 1
0
        public HttpWebResponse GetResponse(OAuthContext context, TokenBase accessToken)
        {
            SignContext(context, accessToken);

            Uri uri = context.GenerateUri();

            Console.WriteLine("Uri: {0}", uri);

            var request = (HttpWebRequest)WebRequest.Create(uri);

            request.Method = context.RequestMethod;

            if ((context.FormEncodedParameters != null) && (context.FormEncodedParameters.Count > 0))
            {
                request.ContentType = "application/x-www-form-urlencoded";
                using (var writer = new StreamWriter(request.GetRequestStream()))
                {
                    writer.Write(UriUtility.FormatQueryString(context.FormEncodedParameters));
                }
            }

            if (UseHeaderForOAuthParameters)
            {
                request.Headers[Parameters.OAuth_Authorization_Header] = context.GenerateOAuthParametersForHeader();
            }

            return((HttpWebResponse)request.GetResponse());
        }
        public HttpWebResponse GetResponse(OAuthContext context, TokenBase accessToken)
        {
            SignContext(context, accessToken);

            Uri uri = context.GenerateUri();

            Console.WriteLine("Uri: {0}", uri);

            var request = (HttpWebRequest) WebRequest.Create(uri);
            request.Method = context.RequestMethod;

            if ((context.FormEncodedParameters != null) && (context.FormEncodedParameters.Count > 0))
            {
                request.ContentType = "application/x-www-form-urlencoded";
                using (var writer = new StreamWriter(request.GetRequestStream()))
                {
                    writer.Write(UriUtility.FormatQueryString(context.FormEncodedParameters));
                }
            }

            if (UseHeaderForOAuthParameters)
            {
                request.Headers[Parameters.OAuth_Authorization_Header] = context.GenerateOAuthParametersForHeader();
            }

            return (HttpWebResponse) request.GetResponse();
        }
        private string CreateAuthorizationHeaderInternal(HttpMethod httpMethod, string url, Dictionary <string, string> parameters,
                                                         string body)
        {
            Encoding enc = Encoding.UTF8;

            NameValueCollection authorizationHeaderParameters = new NameValueCollection();

            authorizationHeaderParameters.Add(Parameters.OAuth_Timestamp, DateTime.Now.Epoch().ToString());
            authorizationHeaderParameters.Add(Parameters.OAuth_Version, "1.0");
            authorizationHeaderParameters.Add(Parameters.OAuth_Consumer_Key, _consumerKey);
            authorizationHeaderParameters.Add(Parameters.OAuth_Signature_Method, SignatureMethod.RsaSha1);
            authorizationHeaderParameters.Add(Parameters.Realm, Realm);

            var oauthContext = new OAuthContext
            {
                AuthorizationHeaderParameters = authorizationHeaderParameters,
                RawUri        = new Uri(url),
                RequestMethod = httpMethod.Method
            };

            authorizationHeaderParameters.Add(Parameters.OAuth_Nonce, new GuidNonceGenerator().GenerateNonce(oauthContext));

            if (parameters != null && parameters.ContainsKey("CallbackUrl"))
            {
                authorizationHeaderParameters.Add(Parameters.OAuth_Callback, parameters["CallbackUrl"]);
            }
            if (parameters != null && parameters.ContainsKey("Oauth_Verifier"))
            {
                authorizationHeaderParameters.Add(Parameters.OAuth_Verifier, parameters["Oauth_Verifier"]);
            }
            if (parameters != null && parameters.ContainsKey("Token"))
            {
                authorizationHeaderParameters.Add(Parameters.OAuth_Token, parameters["Token"]);
            }

            if (body != null)
            {
                var rawContent = enc.GetBytes(body);
                oauthContext.Realm      = null;
                oauthContext.RawContent = rawContent;
                authorizationHeaderParameters.Add(Parameters.OAuth_Body_Hash, oauthContext.GenerateBodyHash());
            }

            oauthContext.AuthorizationHeaderParameters = authorizationHeaderParameters;

            var privateKey = GetCertificate(_certThumbprint).PrivateKey;
            // Set the signature base string so that it's viewable by the
            // caller upon the return of the response.
            var signatureBaseString = oauthContext.GenerateSignatureBase();
            var signer = new RsaSha1SignatureImplementation();

            signer.SignContext(oauthContext,
                               new SigningContext {
                Algorithm = privateKey, SignatureBase = signatureBaseString
            });

            authorizationHeaderParameters.Add(Parameters.OAuth_Signature, oauthContext.Signature);
            oauthContext.AuthorizationHeaderParameters = authorizationHeaderParameters;

            var authHeader = oauthContext.GenerateOAuthParametersForHeader();

            return(authHeader);
        }