Esempio n. 1
0
        /// <summary>
        /// Checks a single entry agasint vulnDB Search API.
        /// </summary>
        /// <param name="consumerkey"></param>
        /// <param name="consumersecret"></param>
        /// <param name="Application"></param>
        /// <returns></returns>
        public static string vulndb_appCheck(String consumerkey, String consumersecret, String Application)
        {
            try
            {
                var requestEndPoint   = new Uri("https://vulndb.cyberriskanalytics.com/oauth/request_token");
                var authorizeEndPoint = new Uri("https://vulndb.cyberriskanalytics.com/oauth/authorize");
                var accessEndPoint    = new Uri("https://vulndb.cyberriskanalytics.com/oauth/access_token");
                var ctx = new OAuthConsumerContext
                {
                    ConsumerKey     = consumerkey,
                    ConsumerSecret  = consumersecret,
                    SignatureMethod = SignatureMethod.HmacSha1
                };
                var genericSession   = new OAuthSession(ctx, requestEndPoint, authorizeEndPoint, accessEndPoint);
                var targetServiceUri = new Uri("https://vulndb.cyberriskanalytics.com/api/v1/vulnerabilities/search_query?query=\"" + Application.ToString() + "\"");
                var respText         = genericSession.Request().Get().ForUri(targetServiceUri).ToString();

                return(respText);
            }
            catch (WebException ex)
            {
                using (var stream = ex.Response.GetResponseStream())
                    using (var reader = new StreamReader(stream))
                    {
                        Console.WriteLine(reader.ReadToEnd());
                        return("Nothing Found for: " + Application.ToString());
                    }
            }
        }
Esempio n. 2
0
        static async Task MainAsync()
        {
            var enterpriseToken = boxJWTHelper.GetEnterpriseToken();
            var config          = new BoxConfig(CLIENT_ID, CLIENT_SECRET, new Uri("http://localhost"));
            var adminSession    = new OAuthSession(enterpriseToken, REFRESH_TOKEN, 3600, "bearer");

            adminClient = new BoxClient(config, adminSession);

            string appUserId   = boxJWTHelper.CreateAppUser("test user", enterpriseToken);
            var    userToken   = boxJWTHelper.GetUserToken(appUserId);
            var    userSession = new OAuthSession(userToken, REFRESH_TOKEN, 3600, "bearer");

            userClient = new BoxClient(config, userSession);

            var items = await adminClient.FoldersManager.GetFolderItemsAsync("0", 100);

            Console.WriteLine("Admin account root folder items:");
            items.Entries.ForEach((i) =>
            {
                Console.WriteLine("\t{0}", i.Name);
                if (i is BoxFile)
                {
                    Console.WriteLine("\t{0}", BoxJWTHelper.EmbedUrl(i.Id, enterpriseToken));
                }
            });

            var userDetails = await userClient.UsersManager.GetCurrentUserInformationAsync();

            Console.WriteLine("\nApp User Details:");
            Console.WriteLine("\tId: {0}", userDetails.Id);
            Console.WriteLine("\tName: {0}", userDetails.Name);
            Console.WriteLine("\tStatus: {0}", userDetails.Status);

            boxJWTHelper.DeleteAppUser(appUserId, enterpriseToken);
        }
Esempio n. 3
0
        /// <summary>
        /// Used to Check if the API key is valid or not.
        /// </summary>
        /// <param name="consumerkey"></param>
        /// <param name="consumersecret"></param>
        /// <returns></returns>
        public static string CMS_Auditor(String consumerkey, String consumersecret)
        {
            try
            {
                var requestEndPoint   = new Uri("https://vulndb.cyberriskanalytics.com/oauth/request_token");
                var authorizeEndPoint = new Uri("https://vulndb.cyberriskanalytics.com/oauth/authorize");
                var accessEndPoint    = new Uri("https://vulndb.cyberriskanalytics.com/oauth/access_token");
                var ctx = new OAuthConsumerContext
                {
                    ConsumerKey     = consumerkey,
                    ConsumerSecret  = consumersecret,
                    SignatureMethod = SignatureMethod.HmacSha1
                };
                var genericSession   = new OAuthSession(ctx, requestEndPoint, authorizeEndPoint, accessEndPoint);
                var targetServiceUri = new Uri("https://vulndb.cyberriskanalytics.com/api/v1/vulnerabilities/search_query?utf8=✓&query=teamviewer");
                var respText         = genericSession.Request().Get().ForUri(targetServiceUri).ToString();

                return(respText);
            }
            catch (WebException ex)
            {
                using (var stream = ex.Response.GetResponseStream())
                    using (var reader = new StreamReader(stream))
                    {
                        Console.WriteLine(reader.ReadToEnd());
                        return("Please Check your API Key and Secret");
                    }
            }
        }
        public ETradeClient(Stocks.OAuthToken consumerToken, bool productionMode = false, Stocks.OAuthToken accessToken = null)
        {
            _consumerToken = new ConsumerToken {
                Token = consumerToken.Token, TokenSecret = consumerToken.Secret
            };

            _consumerContext = new OAuthConsumerContext
            {
                ConsumerKey                 = _consumerToken.Token,
                ConsumerSecret              = _consumerToken.TokenSecret,
                SignatureMethod             = SignatureMethod.HmacSha1,
                UseHeaderForOAuthParameters = true,
                CallBack = "oob"
            };

            _session = new OAuthSession(_consumerContext, RequestUrl, AuthorizeUrl, AccessTokenUrl, RenewAccessTokenUrl);

            _productionMode = productionMode;

            if (accessToken != null)
            {
                _accessToken = new AccessToken {
                    Token = accessToken.Token, TokenSecret = accessToken.Secret
                };
            }
        }
Esempio n. 5
0
        /***************************************twitter API********************************************************************/
        #region twitterAPI 使わない
        private void twitterData()
        {
            //Consumer API keys
            secretkey = "1OJmfQ2mMrnUpxQ5fS1QLXaWWAn1cnrCZx92MGaHmwVwFHhqPF";
            API       = "xHBnAs1VGUS719yrBmD14SYa4";

            /*
             * //Access token & access token secret
             * KeysToken.keydata[1].Value = "601900069-LwMBnujIvrcku3yosdLbpKnnGiuMpWZV747kCsD2";
             * KeysToken.keydata[0].Value = "Fx3XojaxVoEYaBJscFRHfE6D4eStYQvGYPrV1UUolIrWP";
             */
            if (File.Exists(Application.StartupPath + "\\context.xml"))
            {
                UC.browser.Load("https://twitter.com/");
                xmlload(Application.StartupPath + "\\context.xml");

                Thread timelist = new Thread(GetTtitterHomeline);
                timelist.Start();
            }
            else
            {
                //Oath
                os = OAuth.Authorize(API, secretkey);
                //"https://twitter.com/"
                UC.browser.Load(os.AuthorizeUri.AbsoluteUri);

                Thread t1 = new Thread(waitdata);
                t1.Start();
            }
        }
    public string GetResponse(OAuthSession session, string url)
    {
        IToken accessToken = MyTokenBase;
        var    response    = session.Request(accessToken).Get().ForUrl(url).ToString();

        return(response);
    }
Esempio n. 7
0
        private async void LoadCharacter(CharacterInfo character)
        {
            if (character == null)
            {
                return;
            }

            if (character.Id == null)
            {
                TargetCharacter = new CharacterSummary {
                    Name = "<New Character>"
                };
                return;
            }

            OAuthSession   newSession = CreateOAuthSession();
            HttpWebRequest request    = newSession.Request()
                                        .ForUrl(
                $"https://api.obsidianportal.com/v1/campaigns/{character.CampaignId}/characters/{character.Id}.json")
                                        .Get().
                                        ToWebRequest();

            JObject charObject;

            using (
                WebResponse response = await Task.Factory.FromAsync(
                    request.BeginGetResponse,
                    request.EndGetResponse,
                    null))
                using (var streamReader = new StreamReader(response.GetResponseStream()))
                    using (var jsonReader = new JsonTextReader(streamReader))
                        charObject = JObject.Load(jsonReader);

            TargetCharacter = ToSummary(charObject);
        }
        public void GoogleConsumer()
        {
            X509Certificate2 certificate = TestCertificates.OAuthTestCertificate();

            string requestUrl       = "https://www.google.com/accounts/OAuthGetRequestToken";
            string userAuthorizeUrl = "https://www.google.com/accounts/accounts/OAuthAuthorizeToken";
            string accessUrl        = "https://www.google.com/accounts/OAuthGetAccessToken";
            string callBackUrl      = "http://www.mysite.com/callback";

            var consumerContext = new OAuthConsumerContext
            {
                ConsumerKey     = "weitu.googlepages.com",
                SignatureMethod = SignatureMethod.RsaSha1,
                Key             = certificate.PrivateKey
            };

            var session = new OAuthSession(consumerContext, requestUrl, userAuthorizeUrl, accessUrl)
                          .WithQueryParameters(new { scope = "http://www.google.com/m8/feeds" });

            // get a request token from the provider
            IToken requestToken = session.GetRequestToken();

            // generate a user authorize url for this token (which you can use in a redirect from the current site)
            string authorizationLink = session.GetUserAuthorizationUrlForToken(requestToken, callBackUrl);

            // exchange a request token for an access token
            IToken accessToken = session.ExchangeRequestTokenForAccessToken(requestToken);

            // make a request for a protected resource
            string responseText = session.Request().Get().ForUrl("http://www.google.com/m8/feeds/contacts/default/base").ToString();
        }
Esempio n. 9
0
        public MainViewModel() : base()
        {
            OAuthSession session = null;

            Config = new BoxConfig(ClientId, ClientSecret, RedirectUri);
            Client = new BoxClient(Config, session);
        }
        public async Task <IActionResult> BoxRedirect(String code)
        {
            // AUTHコードが受け取れたか確認
            Console.WriteLine("BoxRedirect {0}", code);


            var config = new BoxConfig(ClientId, ClientSecret, new System.Uri(CallBackUrl));
            var client = new BoxClient(config);

            // AUTHコード → アクセストークンへ交換
            await client.Auth.AuthenticateAsync(code);

            var accessToken = client.Auth.Session.AccessToken;
            //var refreshToken = client.Auth.Session.RefreshToken;

            OAuthSession session = client.Auth.Session;

            HttpContext.Session.SetString("AccessToken", session.AccessToken);
            HttpContext.Session.SetString("RefreshToken", session.RefreshToken);
            HttpContext.Session.SetInt32("ExpiresIn", session.ExpiresIn);
            HttpContext.Session.SetString("TokenType", session.TokenType);

            // clientが動くかテスト
            var user = await client.UsersManager.GetCurrentUserInformationAsync();

            Console.WriteLine($"Login User: Id={user.Id}, Name={user.Name}, Login={user.Login}");

            ViewBag.accessToken = accessToken;
            return(RedirectToAction("UIElements"));
        }
        public async Task <IActionResult> UIElements()
        {
            // セッションからアクセストークン等を取り出す
            // ここはおそらくよりよい方法があるはず
            var accessToken  = HttpContext.Session.GetString("AccessToken");
            var refreshToken = HttpContext.Session.GetString("RefreshToken");
            // expiresInはそのまま利用すべきではないと思われるが・・
            var expiresIn = HttpContext.Session.GetInt32("ExpiresIn") ?? default(int);
            var tokenType = HttpContext.Session.GetString("TokenType");

            Console.WriteLine($"session accessToken {accessToken}");
            Console.WriteLine($"session refreshToken {refreshToken}");
            Console.WriteLine($"session expiresIn {expiresIn}");
            Console.WriteLine($"session tokenType {tokenType}");

            // sessionを組み立て直し
            var session = new OAuthSession(accessToken, refreshToken, expiresIn, tokenType);
            // clientをSessionを元に作成
            var config = new BoxConfig(ClientId, ClientSecret, new System.Uri(CallBackUrl));
            var client = new BoxClient(config, session);

            // 動作確認として認証したユーザーの情報を表示
            var user = await client.UsersManager.GetCurrentUserInformationAsync();

            Console.WriteLine($"Login User: Id={user.Id}, Name={user.Name}, Login={user.Login}");

            ViewBag.accessToken = accessToken;
            return(View());
        }
Esempio n. 12
0
        public async Task QueueTask_MultipleThreads_OrderedResponse()
        {
            /*** Arrange ***/
            var numTasks = 1000;

            var count = 0;

            // Increments the access token each time a call is made to the API
            _handler.Setup(h => h.ExecuteAsync <OAuthSession>(It.IsAny <IBoxRequest>()))
            .Returns(() => Task.FromResult <IBoxResponse <OAuthSession> >(new BoxResponse <OAuthSession>()
            {
                Status        = ResponseStatus.Success,
                ContentString = "{\"access_token\": \"" + count + "\",\"expires_in\": 3600,\"token_type\": \"bearer\",\"refresh_token\": \"J7rxTiWOHMoSC1isKZKBZWizoRXjkQzig5C6jFgCVJ9bUnsUfGMinKBDLZWP9BgR\"}"
            })).Callback(() => System.Threading.Interlocked.Increment(ref count));

            /*** Act ***/
            IBoxRequest request = new BoxRequest(new Uri("http://box.com"), "folders");

            var tasks = new List <Task <IBoxResponse <OAuthSession> > >();

            for (var i = 0; i < numTasks; i++)
            {
                tasks.Add(_service.EnqueueAsync <OAuthSession>(request));
            }

            await Task.WhenAll(tasks);

            /*** Assert ***/
            for (var i = 0; i < numTasks; i++)
            {
                OAuthSession session = _converter.Parse <OAuthSession>(tasks[i].Result.ContentString);
                Assert.AreEqual(session.AccessToken, i.ToString());
            }
        }
        // The 'actual' method
        public SPOService InstantiateSPOService(Uri destinationUrl, string loginUrl, PSCredential credential, string tenantId, PromptBehavior?behavior)
        {
            var context = new CmdLetContext(destinationUrl.ToString(), null, null);

            if (credential == null)
            {
                OAuthSession session = string.IsNullOrEmpty(tenantId) ? new OAuthSession() : new OAuthSession(string.Format(nonCommon, tenantId));
                if (_cid == null)
                {
                    session.SignIn(loginUrl, behavior.Value);
                }
                else
                {
                    session.SignIn(loginUrl, behavior.Value, _cid.ToString(), _rduri.ToString());
                }

                context.OAuthSession = session;
            }
            else
            {
                var spCreds = new SharePointOnlineCredentials(credential.UserName, credential.Password);
                context.Credentials = spCreds;
            }
            return(new SPOService(context));
        }
		public void GetUserAuthorizationUriForTokenWithoutCallback()
		{
			var session = new OAuthSession(new OAuthConsumerContext(), "http://localhost/request",
			                               "http://localhost/userauth", "http://localhost/access");
			string actual = session.GetUserAuthorizationUrlForToken(new TokenBase {Token = "token"}, null);
			Assert.Equal("http://localhost/userauth?oauth_token=token", actual);
		}
Esempio n. 15
0
        static string GetDevDefinedOAuthHeader(HttpWebRequest webRequest, string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret)
        {
            OAuthConsumerContext consumerContext = new OAuthConsumerContext
            {
                ConsumerKey                 = consumerKey,
                ConsumerSecret              = consumerSecret,
                SignatureMethod             = SignatureMethod.HmacSha1,
                UseHeaderForOAuthParameters = true
            };

            consumerContext.UseHeaderForOAuthParameters = true;
            OAuthSession oSession = new OAuthSession(consumerContext, GET_REQUEST_TOKEN, AuthorizeUrl, GET_ACCESS_TOKEN);

            oSession.AccessToken = new TokenBase
            {
                Token       = accessToken,
                ConsumerKey = consumerKey,
                TokenSecret = accessTokenSecret
            };
            IConsumerRequest consumerRequest = oSession.Request();

            consumerRequest = ConsumerRequestExtensions.ForMethod(consumerRequest, webRequest.Method);
            consumerRequest = ConsumerRequestExtensions.ForUri(consumerRequest, webRequest.RequestUri);
            consumerRequest = consumerRequest.SignWithToken();
            return(consumerRequest.Context.GenerateOAuthParametersForHeader());
        }
Esempio n. 16
0
        public async Task <bool> Claim(Uri uri, string documentTitle)
        {
            IDictionary <string, string> keyDictionary = new Dictionary <string, string>();
            var qSplit = uri.Query.Split('?');

            foreach (var kvp in qSplit[qSplit.Length - 1].Split('&'))
            {
                var kvpSplit = kvp.Split('=');
                if (kvpSplit.Length == 2)
                {
                    keyDictionary.Add(kvpSplit[0], kvpSplit[1]);
                }
            }

            if (!keyDictionary.ContainsKey("code"))
            {
                return(false);
            }

            var authCode = keyDictionary["code"];

            if (string.IsNullOrEmpty(authCode))
            {
                return(false);
            }

            _api   = BoxHelper.GetClient();
            _token = await _api.Auth.AuthenticateAsync(authCode);

            return(_token != null && _token.RefreshToken != null && _token.AccessToken != null);
        }
Esempio n. 17
0
        // this performs our main OAuth authentication, performing
        // the request token retrieval, authorization, and exchange
        // for an access token
        public IToken GetAccessToken()
        {
            var consumerContext = new OAuthConsumerContext()
            {
                ConsumerKey = "anyone"
            };

            var rest_client = new JsonServiceClient(BaseUri);
            var url         = new Rainy.WebService.ApiRequest().ToUrl("GET");
            var api_ref     = rest_client.Get <ApiResponse> (url);

            var session = new OAuthSession(consumerContext, api_ref.OAuthRequestTokenUrl,
                                           api_ref.OAuthAuthorizeUrl, api_ref.OAuthAccessTokenUrl);

            IToken request_token = session.GetRequestToken();

            // we dont need a callback url
            string link = session.GetUserAuthorizationUrlForToken(request_token, "http://example.com/");

            // visit the link to perform the authorization (no interaction needed)
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(link);

            // disallow auto redirection, since we are interested in the location header only
            req.AllowAutoRedirect = false;

            // the oauth_verifier we need, is part of the querystring in the (redirection)
            // 'Location:' header
            string location   = ((HttpWebResponse)req.GetResponse()).Headers ["Location"];
            var    query      = string.Join("", location.Split('?').Skip(1));
            var    oauth_data = System.Web.HttpUtility.ParseQueryString(query);

            IToken access_token = session.ExchangeRequestTokenForAccessToken(request_token, oauth_data ["oauth_verifier"]);

            return(access_token);
        }
Esempio n. 18
0
        private static string GetDevDefinedOAuthHeader(string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret, HttpWebRequest webRequest, string requestBody)
        {
            OAuthConsumerContext consumerContext = new OAuthConsumerContext
            {
                ConsumerKey                 = consumerKey,
                SignatureMethod             = SignatureMethod.HmacSha1,
                ConsumerSecret              = consumerSecret,
                UseHeaderForOAuthParameters = true
            };

            //We already have OAuth tokens, so OAuth URIs below are not used - set to example.com
            OAuthSession oSession = new OAuthSession(consumerContext, "https://www.example.com",
                                                     "https://www.example.com",
                                                     "https://www.example.com");

            oSession.AccessToken = new TokenBase
            {
                Token       = accessToken,
                ConsumerKey = consumerKey,
                TokenSecret = accessTokenSecret
            };

            IConsumerRequest consumerRequest = oSession.Request();

            consumerRequest = ConsumerRequestExtensions.ForMethod(consumerRequest, webRequest.Method);
            if (requestBody != null)
            {
                consumerRequest = consumerRequest.Post().WithRawContentType(webRequest.ContentType).WithRawContent(System.Text.Encoding.ASCII.GetBytes(requestBody));
            }
            consumerRequest = ConsumerRequestExtensions.ForUri(consumerRequest, webRequest.RequestUri);
            consumerRequest = consumerRequest.SignWithToken();
            return(consumerRequest.Context.GenerateOAuthParametersForHeader());
        }
Esempio n. 19
0
        private async Task FillCampaigns(OAuthSession newSession)
        {
            HttpWebRequest request =
                newSession.Request().Get().ForUrl("https://api.obsidianportal.com/v1/users/me.json").ToWebRequest();

            JObject meObject;

            using (
                WebResponse response = await Task.Factory.FromAsync(
                    request.BeginGetResponse,
                    request.EndGetResponse,
                    null))
                using (var streamReader = new StreamReader(response.GetResponseStream()))
                    using (var jsonReader = new JsonTextReader(streamReader))
                        meObject = JObject.Load(jsonReader);
            var campaigns = (JArray)meObject["campaigns"];

            _settings.UserName = (string)meObject["username"];
            UserName           = _settings.UserName;
            _settings.Save();

            AllCampaigns = new ObservableCollection <CampaignInfo>(
                campaigns.Select(
                    c => new CampaignInfo
            {
                Name = (string)c["name"],
                Id   = (string)c["id"]
            }));

            CurrentCampaign = AllCampaigns.FirstOrDefault(c => c.Id == _settings.LastCampaignId);
        }
Esempio n. 20
0
        /// <summary>
        /// Used to Check if the API key is valid or not.
        /// </summary>
        /// <param name="consumerkey"></param>
        /// <param name="consumersecret"></param>
        /// <returns></returns>
        public static Boolean vulndbCheckCredentials(String consumerkey, String consumersecret)
        {
            if (consumerkey == "" || consumersecret == "")
            {
                return(false);
            }
            try
            {
                var requestEndPoint   = new Uri("https://vulndb.cyberriskanalytics.com/oauth/request_token");
                var authorizeEndPoint = new Uri("https://vulndb.cyberriskanalytics.com/oauth/authorize");
                var accessEndPoint    = new Uri("https://vulndb.cyberriskanalytics.com/oauth/access_token");
                var ctx = new OAuthConsumerContext
                {
                    ConsumerKey     = consumerkey,
                    ConsumerSecret  = consumersecret,
                    SignatureMethod = SignatureMethod.HmacSha1
                };
                var genericSession   = new OAuthSession(ctx, requestEndPoint, authorizeEndPoint, accessEndPoint);
                var targetServiceUri = new Uri("https://vulndb.cyberriskanalytics.com/api/v1/vulnerabilities/");
                var respText         = genericSession.Request().Get().ForUri(targetServiceUri).ToString();

                return(true);
            }
            catch (WebException ex)
            {
                using (var stream = ex.Response.GetResponseStream())
                    using (var reader = new StreamReader(stream))
                    {
                        Console.WriteLine(reader.ReadToEnd());
                        return(false);
                    }
            }
        }
Esempio n. 21
0
        /// <summary>
        /// <para>Gets the OAuth tokens.</para>
        /// <para>Be sure to call <see cref="CoreTweet.OAuth.Authorize"/> before call this method.</para>
        /// </summary>
        /// <param name="session">The OAuth session.</param>
        /// <param name="pin">The pin code.</param>
        /// <returns>The tokens.</returns>
        public static Tokens GetTokens(this OAuthSession session, string pin)
        {
            var prm = new Dictionary <string, object>()
            {
                { "oauth_verifier", pin }
            };
            var header = Tokens.Create(session.ConsumerKey, session.ConsumerSecret, session.RequestToken, session.RequestTokenSecret)
                         .CreateAuthorizationHeader(MethodType.Get, AccessTokenUrl, prm);

            try
            {
                var dic = from x in Request.HttpGet(AccessTokenUrl, prm, header, session.ConnectionOptions).Use()
                          from y in new StreamReader(x.GetResponseStream()).Use()
                          select y.ReadToEnd()
                          .Split('&')
                          .Where(z => z.Contains('='))
                          .Select(z => z.Split('='))
                          .ToDictionary(z => z[0], z => z[1]);

                var t = Tokens.Create(session.ConsumerKey, session.ConsumerSecret,
                                      dic["oauth_token"], dic["oauth_token_secret"], long.Parse(dic["user_id"]), dic["screen_name"]);
                t.ConnectionOptions = session.ConnectionOptions;
                return(t);
            }
            catch (WebException ex)
            {
                var tex = TwitterException.Create(ex);
                if (tex != null)
                {
                    throw tex;
                }
                throw;
            }
        }
Esempio n. 22
0
        /// <summary>
        /// <para>Gets the OAuth tokens as an asynchronous operation.</para>
        /// <para>Be sure to call <see cref="CoreTweet.OAuth.AuthorizeAsync"/> before call this method.</para>
        /// </summary>
        /// <param name="session">The OAuth session.</param>
        /// <param name="pin">The pin code.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>
        /// <para>The task object representing the asynchronous operation.</para>
        /// <para>The Result property on the task object returns the tokens.</para>
        /// </returns>
        public static Task <Tokens> GetTokensAsync(this OAuthSession session, string pin, CancellationToken cancellationToken = default(CancellationToken))
        {
            var prm = new Dictionary <string, object>()
            {
                { "oauth_verifier", pin }
            };
            var header = Tokens.Create(session.ConsumerKey, session.ConsumerSecret, session.RequestToken, session.RequestTokenSecret)
                         .CreateAuthorizationHeader(MethodType.Get, AccessTokenUrl, prm);

            return(Request.HttpGetAsync(AccessTokenUrl, prm, header, session.ConnectionOptions, cancellationToken)
                   .ResponseCallback(cancellationToken)
                   .ContinueWith(
                       t => InternalUtils.ReadResponse(t, s =>
            {
                var dic = s.Split('&')
                          .Where(z => z.Contains("="))
                          .Select(z => z.Split('='))
                          .ToDictionary(z => z[0], z => z[1]);
                var token = Tokens.Create(session.ConsumerKey, session.ConsumerSecret,
                                          dic["oauth_token"], dic["oauth_token_secret"], long.Parse(dic["user_id"]), dic["screen_name"]);
                token.ConnectionOptions = session.ConnectionOptions;
                return token;
            }, cancellationToken),
                       cancellationToken
                       ).Unwrap());
        }
Esempio n. 23
0
        public void generate_request_with_raw_body_includes_body_hash()
        {
            var session = new OAuthSession(new OAuthConsumerContext {
                ConsumerKey = "consumer", UseHeaderForOAuthParameters = true
            }, "http://localhost/request", "http://localhost/userauth",
                                           "http://localhost/access");

            var accessToken = new TokenBase {
                ConsumerKey = "consumer", Token = "token", TokenSecret = "secret"
            };

            byte[] rawContents = Encoding.UTF8.GetBytes("Hello World!");

            IConsumerRequest content = session
                                       .EnableOAuthRequestBodyHashes()
                                       .Request(accessToken)
                                       .Post()
                                       .ForUrl("http://localhost/resource")
                                       .WithRawContent(rawContents);

            RequestDescription description = content.GetRequestDescription();

            Assert.Equal(rawContents, description.RawBody);

            Assert.Contains("oauth_body_hash=\"Lve95gjOVATpfV8EL5X4nxwjKHE%3D\"", description.Headers[Parameters.OAuth_Authorization_Header]);
        }
Esempio n. 24
0
        private async void OnOpenBrowserAuthAsync(object sender, RoutedEventArgs e)
        {
            var progdiag = await this.ShowProgressAsync("読み込み中...", "認証の準備をしています。しばらくお待ちください。");

            try
            {
                await Task.Run(() =>
                {
                    session = OAuth.Authorize(APIKey.CONSUMER_KEY, APIKey.CONSUMER_SECRET);
                    var processStartInfo = new ProcessStartInfo(session.AuthorizeUri.AbsoluteUri)
                    {
                        UseShellExecute = true,
                        Verb            = "open"
                    };
                    System.Diagnostics.Process.Start(processStartInfo);
                });

                WindowTab.SelectedIndex = 1;
            }
            catch (Exception ex)
            {
                await this.ShowMessageAsync("エラー",
                                            $"何らかのエラーで認証を開始することが出来ませんでした。\n\n{ex}");
            }
            finally
            {
                await progdiag.CloseAsync();
            }
        }
        /// <summary>
        /// <para>Performs the query specified in the "query" string to perform a request that requires authorization.
        /// </para><para>This method requires that either an accessToken has been set manually or
        /// that the GetVerificationCode() and AuthenticateWithVerificationCode(string code) methods have been called previously.
        /// </para><para>It returns the IConsumerRequest fully enabled to make the request specified in the "query" string.</para>
        /// </summary>
        /// <param name="query">The query string that will be added to the url and used to connect to the API with.</param>
        /// <returns>IConsumerRequest.</returns>
        public IConsumerRequest AuthenticatedQuery(string query)
        {
            var url = BaseUrl + query;

            if (AccessToken == null)
            {
                throw new AccessTokenIsNullException();
            }

            var consumerContext = new OAuthConsumerContext
            {
                ConsumerKey                 = ConsumerKey,
                ConsumerSecret              = ConsumerSecret,
                SignatureMethod             = SignatureMethod.HmacSha1,
                UseHeaderForOAuthParameters = true
            };

            var consumerSession = new OAuthSession(consumerContext, RequestTokenUrl + ScopeOfRequest, AuthorizeUrl, AccessUrl)
            {
                AccessToken = AccessToken
            };

            var getRequest = consumerSession
                             .Request()
                             .ForMethod(Constants.GET)
                             .ForUri(new Uri(url))
                             .SignWithToken(AccessToken);

            return(getRequest);
        }
Esempio n. 26
0
        /// <summary>
        /// This updates the parties squad assignments, mainly used when a member joins or leaves.
        /// </summary>
        /// <param name="oAuthSession">The <see cref="OAuthSession"/> to use for authentication.</param>
        internal async Task UpdateSquadAssignments(OAuthSession oAuthSession)
        {
            // Initialise our variables
            var assignments = new List <RawSquadAssignment>();
            var index       = 0;

            // Add the current account to the list of assignments
            assignments.Add(new(oAuthSession.AccountId));

            // For each member in the party...
            foreach (var member in Members)
            {
                // If the member is our XMPP client, continue enumerating through the party's members.
                if (member.Id == oAuthSession.AccountId)
                {
                    continue;
                }

                // Increment our index and add the member to the list of assignments.
                index++;
                assignments.Add(new(member.Id, index));
            }

            // Update/set our meta to the list of assignments.
            Meta["Default:RawSquadAssignments_j"] = new RawSquadAssignments(assignments).ToString();

            // Update the party with the new squad assignments.
            await PartyService.UpdateParty(oAuthSession, this, new()
            {
                { "Default:RawSquadAssignments_j", Meta["Default:RawSquadAssignments_j"] }
            });
        }
        /// <summary>
        /// <para>This is the second and final step in the authorisation process. It uses the verification code (retrieved in public string GetVerificationCode()).
        /// </para><para>It exchanges the verification code for an access token.</para>
        /// <para>Once this step has been performed the user will be enabled to perform authenticated requests.</para>
        /// </summary>
        /// <param name="code">The verification code.</param>
        public void AuthenticateWithVerificationCode(string code)
        {
            if (string.IsNullOrEmpty(code))
            {
                throw new NoVerificationCodeException();
            }

            code = code.Trim();

            var consumerContext = new OAuthConsumerContext
            {
                ConsumerKey                 = ConsumerKey,
                ConsumerSecret              = ConsumerSecret,
                SignatureMethod             = SignatureMethod.HmacSha1,
                UseHeaderForOAuthParameters = true
            };

            var session = new OAuthSession(
                consumerContext,
                RequestTokenUrl + ScopeOfRequest,
                AuthorizeUrl,
                AccessUrl);

            AccessToken = session.ExchangeRequestTokenForAccessToken(RequestToken, code);
        }
        // unauthenticated connection method:

        /// <summary>
        /// Creates a connection with no authorization headers - used for requests that don't require authentication.
        /// This method does not actually perform the request - it returns the object to make the request with.
        /// </summary>
        /// <param name="query">The url to connect to.</param>
        /// <returns>IConsumerRequest.</returns>
        public IConsumerRequest UnauthenticatedConnection(string query)
        {
            var url = BaseUrl + query;

            if (AccessToken != null)
            {
                return(AuthenticatedQuery(query));
            }

            var consumerContext = new OAuthConsumerContext
            {
                ConsumerKey                 = " ",
                ConsumerSecret              = " ",
                SignatureMethod             = DevDefined.OAuth.Framework.SignatureMethod.PlainText,
                UseHeaderForOAuthParameters = false
            };

            var consumerSession = new OAuthSession(consumerContext, RequestTokenUrl, AuthorizeUrl, AccessUrl);

            var getRequest = consumerSession
                             .Request()
                             .ForMethod(Constants.GET)
                             .ForUri(new Uri(url));

            return(getRequest);
        }
Esempio n. 29
0
        private async Task ExecuteMainAsync()
        {
            var devToken       = "E3myQeNXgY2PA5q2AQaSqLbEUIVabPeU";
            var fileName       = "test.txt";
            var localFilePath  = @"C:\Users\Public\test.txt";
            var parentFolderId = "1";

            var timer = Stopwatch.StartNew();



            var config = new BoxConfig(CLIENT_ID, CLIENT_SECRET, new Uri("http://boxsdk"));
            //DevToken
            var auth   = new OAuthSession(devToken, "NOT_NEEDED", 3600, "bearer");
            var client = new BoxClient(config, auth);

            var file        = File.OpenRead(localFilePath);
            var fileRequest = new BoxFileRequest
            {
                Name   = fileName,
                Parent = new BoxFolderRequest {
                    Id = parentFolderId
                }
            };

            var bFile = await client.FilesManager.UploadAsync(fileRequest, file);

            Console.WriteLine("{0} uploaded to folder: {1} as file: {2}", localFilePath, parentFolderId, bFile.Id);
            Console.WriteLine("Time spend : {0} ms", timer.ElapsedMilliseconds);
            Console.ReadKey();
        }
        static string GetDevDefinedOAuthHeader(HttpWebRequest webRequest, string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret)
        {
            OAuthConsumerContext consumerContext = new OAuthConsumerContext
            {
                ConsumerKey                 = consumerKey,
                ConsumerSecret              = consumerSecret,
                SignatureMethod             = SignatureMethod.HmacSha1,
                UseHeaderForOAuthParameters = true
            };

            consumerContext.UseHeaderForOAuthParameters = true;

            //URIs not used - we already have Oauth tokens
            OAuthSession oSession = new OAuthSession(consumerContext, "https://www.example.com",
                                                     "https://www.example.com",
                                                     "https://www.example.com");


            oSession.AccessToken = new TokenBase
            {
                Token       = accessToken,
                ConsumerKey = consumerKey,
                TokenSecret = accessTokenSecret
            };

            IConsumerRequest consumerRequest = oSession.Request();

            consumerRequest = ConsumerRequestExtensions.ForMethod(consumerRequest, webRequest.Method);
            consumerRequest = ConsumerRequestExtensions.ForUri(consumerRequest, webRequest.RequestUri);
            consumerRequest = consumerRequest.SignWithToken();
            return(consumerRequest.Context.GenerateOAuthParametersForHeader());
        }
 public PINInputForm(string postMassage, OAuthSession session)
 {
     _postMassage = postMassage;
     _session = session;
     InitializeComponent();
 }
Esempio n. 32
0
		public async Task SetTokensFromPinCodeAsync(OAuthSession session, uint pinCode)
		{
			this.Tokens = new Tokens(await OAuth.GetTokensAsync(session, pinCode.ToString()));
			this.IsTokensLoaded = true;
			this._isDirty = true;
		}