public void GetRequestToken(string consumerKey, string consumerSecret, string callbackUrl, string serviceUri, string requestTokenUri, string authorizationUri, string accessTokenUri) { RequestTokenModel model = new RequestTokenModel(); model.ConsumerKey = consumerKey; model.ConsumerSecret = consumerSecret; EndpointModel endpointModel = new EndpointModel(); endpointModel.ServiceUri = serviceUri; endpointModel.RequestTokenUri = requestTokenUri; endpointModel.AuthorizationUri = authorizationUri; endpointModel.AccessTokenUri = accessTokenUri; model.EndpointModel = endpointModel; OAuthClientBase oauthClient = OAuthClient.CreateClient(consumerKey, consumerSecret, endpointModel); if (oauthClient != null) { IOAuthToken requestToken = oauthClient.GetRequestToken(this.GenerateRealm(TestUserId, "*****@*****.**"), callbackUrl); model.Token = requestToken.Token; model.Secret = requestToken.Secret; } Session[model.Token] = model; string authorizationUrl = oauthClient.GetUserAuthorizationUrl(model); this.Response.Redirect(authorizationUrl, false); }
public static string ToAuthorizationString(this IList <QueryParameter> parameters) { var sb = new StringBuilder(); sb.Append("OAuth "); for (int i = 0; i < parameters.Count; i++) { string format = "{0}=\"{1}\""; QueryParameter p = parameters[i]; sb.AppendFormat(format, OAuthClientBase.UrlEncode(p.Name), OAuthClientBase.UrlEncode(p.Value)); if (i < parameters.Count - 1) { sb.Append(", "); } } return(sb.ToString()); }
public ActionResult OAuthCallback(string oauth_token, string oauth_verifier) { RequestTokenModel model = new RequestTokenModel(); string requestTokenString = Request[Parameters.OAuth_Token]; string verifier = Request[Parameters.OAuth_Verifier]; RequestTokenModel storedRequestTokenModel = (RequestTokenModel)Session[requestTokenString]; model.ConsumerKey = storedRequestTokenModel.ConsumerKey; model.ConsumerSecret = storedRequestTokenModel.ConsumerSecret; model.EndpointModel = storedRequestTokenModel.EndpointModel; OAuthKeyConfiguration oauthConfiguration = OAuthKeyConfiguration.GetInstance(); OAuthClientBase oauthClient = OAuthClient.CreateClient(oauthConfiguration.ConsumerKey, oauthConfiguration.ConsumerSecret, storedRequestTokenModel.EndpointModel); if (string.IsNullOrEmpty(verifier)) { throw new Exception("Expected a non-empty verifier value"); } IOAuthToken accessToken; try { accessToken = oauthClient.ExchangeRequestTokenForAccessToken(storedRequestTokenModel, verifier); model.Token = accessToken.Token; model.Secret = accessToken.Secret; } catch (OAuthException authEx) { Session["problem"] = authEx.Report; Response.Redirect("AccessDenied.aspx"); } return(View(model)); }
/// <summary> /// Checks if user is successfully authenticated when user is redirected back to this user. /// </summary> /// <param name="returnUrl">The return Url which must match exactly the Url passed into RequestAuthentication() earlier.</param> /// <returns> /// The result of the authentication. /// </returns> public AuthenticationResult VerifyAuthentication(string returnUrl) { // Only OAuth2 requires the return url value for the verify authenticaiton step OAuthClientBase oauth2Client = this.authenticationProvider as OAuthClientBase; if (oauth2Client != null) { // convert returnUrl to an absolute path Uri uri; if (!string.IsNullOrEmpty(returnUrl)) { uri = UriHelper.ConvertToAbsoluteUri(returnUrl, this.requestContext); } else { uri = this.requestContext.Request.GetPublicFacingUrl(); } AuthenticationResult result = oauth2Client.VerifyAuthentication(this.requestContext, uri); if (!result.IsSuccessful) { // if the result is a Failed result, creates a new Failed response which has providerName info. result = new AuthenticationResult( isSuccessful: false, provider: this.authenticationProvider.ProviderName, providerUserId: null, userName: null, extraData: null); } return(result); } else { return(this.VerifyAuthentication()); } }