public string GetUserAuthorizationUrlForToken(IToken token, string callbackUrl) { var builder = new UriBuilder(UserAuthorizeUri); var collection = new NameValueCollection(); if (builder.Query != null) { collection.Add(HttpUtility.ParseQueryString(builder.Query)); } if (_queryParameters != null) { collection.Add(_queryParameters); } collection[Parameters.OAuth_Token] = token.Token; if (!string.IsNullOrEmpty(callbackUrl)) { collection[Parameters.OAuth_Callback] = callbackUrl; } builder.Query = string.Empty; return(builder.Uri + "?" + UriUtility.FormatQueryString(collection)); }
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 RequestDescription GetRequestDescription() { if (string.IsNullOrEmpty(_context.Signature)) { if (_token != null) { _consumerContext.SignContextWithToken(_context, _token); } else { _consumerContext.SignContext(_context); } } Uri uri = _context.GenerateUri(); var description = new RequestDescription { Url = uri, Method = _context.RequestMethod }; if ((_context.FormEncodedParameters != null) && (_context.FormEncodedParameters.Count > 0)) { description.ContentType = "application/x-www-form-urlencoded"; description.Body = UriUtility.FormatQueryString(_context.FormEncodedParameters.ToQueryParametersExcludingTokenSecret()); } if (_consumerContext.UseHeaderForOAuthParameters) { description.Headers[Parameters.OAuth_Authorization_Header] = _context.GenerateOAuthParametersForHeader(); } return(description); }
/// <summary> /// Generate the uri. /// </summary> /// <returns>The URI string.</returns> public string GenerateUrl() { var builder = new UriBuilder(NormalizedRequestUrl); builder.Query = ""; return(builder.Uri + "?" + UriUtility.FormatQueryString(QueryParameters)); }
/// <summary> /// Generate the uri. /// </summary> /// <returns>The URI.</returns> public Uri GenerateUri() { var builder = new UriBuilder(NormalizedRequestUrl); IEnumerable <QueryParameter> parameters = QueryParameters.ToQueryParametersExcludingTokenSecret(); builder.Query = UriUtility.FormatQueryString(parameters); return(builder.Uri); }
/// <summary> /// Generate uri without OAuth parameters. /// </summary> /// <returns>The generated URI.</returns> public Uri GenerateUriWithoutOAuthParameters() { var builder = new UriBuilder(NormalizedRequestUrl); IEnumerable <QueryParameter> parameters = QueryParameters.ToQueryParameters() .Where(q => !q.Key.StartsWith(Parameters.OAuthParameterPrefix) && !q.Key.StartsWith(Parameters.XAuthParameterPrefix)); builder.Query = UriUtility.FormatQueryString(parameters); return(builder.Uri); }
private RequestDescription GetRequestDescription() { if (string.IsNullOrEmpty(_context.Signature)) { if (_token != null) { _consumerContext.SignContextWithToken(_context, _token); } else { _consumerContext.SignContext(_context); } } RequestDescription description = new RequestDescription { Url = _context.GenerateUri(), Method = _context.RequestMethod }; if ((_context.FormEncodedParameters != null) && (_context.FormEncodedParameters.Count > 0)) { description.ContentType = Parameters.HttpFormEncoded; description.Body = UriUtility.FormatQueryString(_context.FormEncodedParameters.ToQueryParametersExcludingTokenSecret()); } else if (!string.IsNullOrEmpty(RequestBody)) { description.Body = UriUtility.UrlEncode(RequestBody); description.ContentType = ContentType; } else if (RequestStream != null) { description.RequestStream = RequestStream; description.ContentType = ContentType; } if (_consumerContext.UseHeaderForOAuthParameters) { description.Headers[Parameters.OAuth_Authorization_Header] = _context.GenerateOAuthParametersForHeader(); } return(description); }
private string GetUserAuthorizationUrl(IToken requestToken) { var builder = new UriBuilder(ConsumerContext.UserAuthorizeUri); var collection = new NameValueCollection(); if (builder.Query != null) { collection.Add(UriUtility.ParseQueryString(builder.Query)); } if (_queryParameters != null) { collection.Add(_queryParameters); } collection[Parameters.OAuth_Token] = requestToken.Token; builder.Query = UriUtility.FormatQueryString(collection); return(builder.Uri.ToString()); }
/// <summary> /// Create a authorise token from the request. /// </summary> /// <param name="rawUri">A System.Uri object containing information regarding the URL of the current request.</param> /// <param name="queryString">The collection of HTTP query string variables.</param> /// <param name="form">The collection of form variables.</param> /// <param name="headers">The collection of HTTP headers.</param> /// <param name="cookies">The collection of cookies sent by the client.</param> /// <param name="isApprovedByUser">Has the user approved the client to access the resources.</param> /// <returns>The formatted redirect url; else null.</returns> public string CreateAuthoriseToken(Uri rawUri, NameValueCollection queryString, NameValueCollection form, NameValueCollection headers, HttpCookieCollection cookies, bool isApprovedByUser = false) { try { // Make sure that all the passed parameters are valid. if (rawUri == null) { throw new ArgumentNullException("rawUri"); } if (queryString == null) { throw new ArgumentNullException("queryString"); } if (form == null) { throw new ArgumentNullException("form"); } if (headers == null) { throw new ArgumentNullException("headers"); } if (cookies == null) { throw new ArgumentNullException("cookies"); } // Only process if the user has approved the request. if (isApprovedByUser) { // Make sure that all the maditory OAuth parameters // have been passed to the provider from the consumer OAuthProblemReport validate = new OAuthProblemReport(queryString); validate.ValidateAuthoriseParametersAbsent(queryString); string validationError = validate.ToString(); // If any of the maditory OAuth parameters are missing. if (!String.IsNullOrEmpty(validationError)) { throw new OAuthException(OAuthProblemParameters.ParameterAbsent, "Absent Parameters", new Exception(validationError)); } // Create an assign each manditory parameter. IOAuthContext context = new OAuthContextProvider(); context.RawUri = rawUri; context.RequestMethod = "GET"; context.Headers = headers; context.QueryParameters = queryString; context.FormEncodedParameters = form; context.Token = queryString[Parameters.OAuth_Token]; context.CallbackUrl = queryString[Parameters.OAuth_Callback]; string companyUniqueUserID = queryString[Parameters.Company_Unique_User_Identifier]; // Assign each optional parameter GetOptionalAuthoriseParameters(context, queryString); // Create a new OAuth provider. _oAuthProvider = new OAuthProvider(_tokenStore, new NonceStoreInspector(_nonceStore), new TimestampRangeInspector(new TimeSpan(1, 0, 0)), new ConsumerValidationInspector(_consumerStore), new XAuthValidationInspector(ValidateXAuthMode, AuthenticateXAuthUsernameAndPassword)); // Create the access token from the stores, and create a new verification code. string verifier = _consumerStore.SetVerificationCode(context, companyUniqueUserID); IToken token = _oAuthProvider.CreateAccessToken(context); // Create the parameter response. NameValueCollection parameters = new NameValueCollection(); parameters[Parameters.OAuth_Token] = token.Token; parameters[Parameters.OAuth_Verifier] = verifier; // Return the token callback query string.. return(context.CallbackUrl + "?" + UriUtility.FormatQueryString(parameters)); } else { throw new OAuthException(OAuthProblemParameters.PermissionDenied, "Authorisation Denied", new Exception("User has denied access")); } } catch (OAuthException aex) { // Get the current token errors. _tokenError = aex.Report.ToString(); return(null); } catch (Exception ex) { // Transform the execption. OAuthException OAuthException = new OAuthException(OAuthProblemParameters.ParameterRejected, ex.Message, ex); // Get the current token errors. _tokenError = OAuthException.Report.ToString(); return(null); } }
private static string GetQueryString(IEnumerable <QueryParameter> parameters) { return(UriUtility.FormatQueryString(parameters.ToNameValueCollection())); }