/// <summary> /// This method parses the incoming request and creates an OAuth message from it. /// </summary> /// <param name="httpContext"> The current HttpContext.</param> /// <returns>Returns the OAuth message created from the incoming request.</returns> public virtual OAuthMessage ParseIncomingRequest(HttpContextBase httpContext) { if (TempData[OauthMessageKey] != null) { TempData.Keep(OauthMessageKey); return TempData[OauthMessageKey] as OAuthMessage; } var serializer = new OAuthMessageSerializer(); var message = serializer.Read(httpContext); return message; }
public virtual OAuthMessage Read(string httpMethod, string httpContentType, Uri requestUri, System.IO.Stream incomingStream) { if (string.IsNullOrEmpty(httpMethod)) { throw new ArgumentOutOfRangeException("httpMethod"); } if (requestUri == null) { throw new ArgumentNullException("requestUri"); } if (incomingStream == null) { throw new ArgumentNullException("incomingStream"); } NameValueCollection oAuthParameters = new NameValueCollection(); if (httpMethod == "POST") { if (httpContentType.Contains("application/x-www-form-urlencoded")) { oAuthParameters = this.ReadFormEncodedParameters(incomingStream); } else { if (!httpContentType.Contains("application/json")) { throw new OAuthMessageSerializationException(string.Format(Resources.ID3721, httpMethod, httpContentType)); } oAuthParameters = this.ReadJsonEncodedParameters(incomingStream); } } else { if (!(httpMethod == "GET")) { throw new OAuthMessageSerializationException(string.Format(Resources.ID3722, httpMethod)); } oAuthParameters = HttpUtility.ParseQueryString(requestUri.Query); } return(this.CreateTypedOAuthMessageFromParameters(OAuthMessageSerializer.GetBaseUrl(requestUri), oAuthParameters)); }
private void AuthorizeTwoLegged() { var authorizeCodeRequest = BuildAuthorizationCodeRequest(); var serializer = new OAuthMessageSerializer(); var encodedQueryFormat = serializer.GetFormEncodedQueryFormat(authorizeCodeRequest); HttpWebRequest httpWebRequest = WebRequest.Create(authorizeCodeRequest.BaseUri) as HttpWebRequest; httpWebRequest.Method = "POST"; httpWebRequest.ContentType = "application/x-www-form-urlencoded"; StreamWriter streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()); streamWriter.Write(encodedQueryFormat); streamWriter.Close(); try { var message = serializer.Read(httpWebRequest.GetResponse() as HttpWebResponse) as EndUserAuthorizationResponse; if (message != null) { AuthorizeWithACS(message.Code); } } catch (WebException webex) { var message = serializer.Read(webex.Response as HttpWebResponse); var endUserAuthorizationFailedResponse = message as EndUserAuthorizationFailedResponse; if (endUserAuthorizationFailedResponse != null) { throw new AuthenticationException(endUserAuthorizationFailedResponse.ErrorDescription); } var userAuthorizationFailedResponse = message as ResourceAccessFailureResponse; if (userAuthorizationFailedResponse != null) { throw new AuthenticationException(userAuthorizationFailedResponse.ErrorDescription); } throw; } }
/// <summary> /// Authorizes the specified refresh token. /// </summary> /// <param name="refreshToken">The refresh token.</param> public void Authorize(string refreshToken) { var authorizeRequest = BuildAccessTokenRequest(refreshToken); var serializer = new OAuthMessageSerializer(); var encodedQueryFormat = serializer.GetFormEncodedQueryFormat(authorizeRequest); HttpWebRequest httpWebRequest = WebRequest.Create(authorizeRequest.BaseUri) as HttpWebRequest; httpWebRequest.Method = "POST"; httpWebRequest.ContentType = "application/x-www-form-urlencoded"; StreamWriter streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()); streamWriter.Write(encodedQueryFormat); streamWriter.Close(); try { var message = serializer.Read(httpWebRequest.GetResponse() as HttpWebResponse) as AccessTokenResponse; if (message != null) { CurrentAccessToken = message; LastAccessTokenRefresh = DateTime.UtcNow; } } catch (WebException webex) { var message = serializer.Read(webex.Response as HttpWebResponse); var endUserAuthorizationFailedResponse = message as EndUserAuthorizationFailedResponse; if (endUserAuthorizationFailedResponse != null) { throw new AuthenticationException(endUserAuthorizationFailedResponse.ErrorDescription); } var userAuthorizationFailedResponse = message as ResourceAccessFailureResponse; if (userAuthorizationFailedResponse != null) { throw new AuthenticationException(userAuthorizationFailedResponse.ErrorDescription); } throw; } }