Example #1
0
        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);
        }
Example #2
0
        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());
        }
Example #3
0
        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));
        }
Example #4
0
        /// <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());
            }
        }