コード例 #1
0
ファイル: DbOAuthTests.cs プロジェクト: Dynalon/Rainy
        public void DbAccessTokenRepository()
        {
            var repo = new DbAccessTokenRepository<AccessToken> (this.connFactory);

            var token1 = new AccessToken () {
                ConsumerKey = "anyone",
                UserName = "******",
                ExpiryDate = DateTime.Now.AddYears (10),
                Realm = "tomboy",
                Token = Guid.NewGuid ().ToString (),
                TokenSecret = Guid.NewGuid ().ToString (),
            };
            repo.SaveToken (token1);

            var token2 = repo.GetToken (token1.Token);

            Assert.AreEqual (token1.ConsumerKey, token2.ConsumerKey);
            Assert.AreEqual (token1.Realm, token2.Realm);
            Assert.AreEqual (token1.UserName, token2.UserName);
            Assert.AreEqual (token1.ExpiryDate, token2.ExpiryDate);

            // the token is only the first 16 byte = 192 bits - the token is
            // 160 byte = 920 bits long (due to the padding added)
            Assert.AreEqual (token1.Token.Substring (0, 24), token2.Token);
            Assert.AreEqual (token1.TokenSecret, token2.TokenSecret);
        }
コード例 #2
0
ファイル: DbTokenMapper.cs プロジェクト: Dynalon/Rainy
 public static IToken ToAccessToken(this DBAccessToken token)
 {
     var access_token = new AccessToken();
     access_token.ConsumerKey = token.ConsumerKey;
     access_token.TokenSecret = token.Secret;
     access_token.Token = token.Token;
     access_token.Realm = token.Realm;
     access_token.Roles = token.Roles;
     access_token.UserName = token.UserName;
     access_token.ExpiryDate = token.ExpiryDate;
     return access_token;
 }
コード例 #3
0
        protected IToken GetAccessToken()
        {
            // access tokens can be retrieved with gconf once tomboy is setup for syncing
            // use those paths:
            // /apps/tomboy/sync/tomboyweb/oauth_token
            // /apps/tomboy/sync/tomboyweb/oauth_token_secret

            IToken access_token = new AccessToken ();
            access_token.ConsumerKey = "anyone";
            access_token.Token = "zqkX2sJ0DN2xS2wp7Vjb";
            access_token.TokenSecret = "zjhRkTWWFSJCQdZgr61thWD7qDz7z3t7LT3F9mQ7Hxk0cDV0hqF11xcRR38dLVJxX1Qb3lxCcRN5nwXt";

            return access_token;
        }
コード例 #4
0
 public OauthSessionProvider(IOauthValueProvider valueProvider)
 {
     _valueProvider = valueProvider;
     var context = new OAuthConsumerContext
     {
         ConsumerKey = _valueProvider.ConsumerKey,
         ConsumerSecret = _valueProvider.ConsumerSecret,
         SignatureMethod = SignatureMethod.PlainText,
         UseHeaderForOAuthParameters = true
     };
     _session = new OAuthSession(context, RequestUrl, UserAuthorizeUrl, AccessUrl);
     var accessToken = new AccessToken
     {
         Token = _valueProvider.Token,
         TokenSecret = _valueProvider.TokenSecret
     };
     _session.AccessToken = accessToken;
 }
コード例 #5
0
        void ApproveRequestForAccess(string tokenString)
        {
            DevDefined.OAuth.Storage.Basic.RequestToken requestToken = RequestTokenRepository.GetToken(tokenString);

            var accessToken = new DevDefined.OAuth.Storage.Basic.AccessToken
            {
                ConsumerKey = requestToken.ConsumerKey,
                Realm       = requestToken.Realm,
                Token       = Guid.NewGuid().ToString(),
                TokenSecret = Guid.NewGuid().ToString(),
                UserName    = HttpContext.Current.User.Identity.Name,
                //ExpireyDate = DateTime.Now.AddMinutes(1),
                Roles = new string[] {}
            };

            AccessTokenRepository.SaveToken(accessToken);

            requestToken.AccessToken = accessToken;

            RequestTokenRepository.SaveToken(requestToken);
        }
コード例 #6
0
    /// <summary>
    /// Create an access token using xAuth.
    /// </summary>
    /// <param name="context">The context.</param>
    /// <returns></returns>
    public IToken CreateAccessToken(IOAuthContext context)
    {
      if (context == null)
      {
        throw new ArgumentNullException("context");
      }

      var accessToken = new AccessToken
        {
          ConsumerKey = context.ConsumerKey,
          ExpiryDate = DateTime.UtcNow.AddDays(20),
          Realm = context.Realm,
          Token = Guid.NewGuid().ToString(),
          TokenSecret = Guid.NewGuid().ToString(),
          UserName = Guid.NewGuid().ToString(),
        };

      _accessTokenRepository.SaveToken(accessToken);

      return accessToken;
    }
コード例 #7
0
 static TokenPrincipal CreatePrincipalFromToken(AccessToken accessToken)
 {
   return new TokenPrincipal(
     new GenericIdentity(accessToken.UserName, "OAuth"),
     accessToken.Roles,
     accessToken);
 }
コード例 #8
0
    void ApproveRequestForAccess(string tokenString)
    {
      RequestToken requestToken = RequestTokenRepository.GetToken(tokenString);

      var accessToken = new AccessToken
        {
          ConsumerKey = requestToken.ConsumerKey,
          Realm = requestToken.Realm,
          Token = Guid.NewGuid().ToString(),
          TokenSecret = Guid.NewGuid().ToString(),
          UserName = HttpContext.Current.User.Identity.Name,
          ExpiryDate = DateTime.Now.AddMinutes(1)
        };

      AccessTokenRepository.SaveToken(accessToken);

      requestToken.AccessToken = accessToken;

      requestToken.Verifier = UnguessableGenerator.GenerateUnguessable();

      RequestTokenRepository.SaveToken(requestToken);
    }
コード例 #9
0
 public void SaveAccessToken(AccessToken accessToken)
 {
     UserSettings.Default.AccessTokenJson = (accessToken == null)
         ? string.Empty
         : JsonConvert.SerializeObject(accessToken, Formatting.None);
 }
コード例 #10
0
    void ApproveRequestForAccess(string tokenString)
    {
      DevDefined.OAuth.Storage.Basic.RequestToken requestToken = RequestTokenRepository.GetToken(tokenString);

      var accessToken = new DevDefined.OAuth.Storage.Basic.AccessToken
        {
          ConsumerKey = requestToken.ConsumerKey,
          Realm = requestToken.Realm,
          Token = Guid.NewGuid().ToString(),
          TokenSecret = Guid.NewGuid().ToString(),
          UserName = HttpContext.Current.User.Identity.Name,
          //ExpireyDate = DateTime.Now.AddMinutes(1),
          Roles = new string[] {}
        };

      AccessTokenRepository.SaveToken(accessToken);

      requestToken.AccessToken = accessToken;

      RequestTokenRepository.SaveToken(requestToken);
    }
コード例 #11
0
ファイル: DbBasicTests.cs プロジェクト: jonpolak/Rainy
        public void DbTokenRepository()
        {
            var repo = new DbAccessTokenRepository<AccessToken> ();

            var token1 = new AccessToken () {
                ConsumerKey = "anyone",
                UserName = "******",
                ExpiryDate = DateTime.Now.AddYears (10),
                Realm = "tomboy",
                Token = Guid.NewGuid ().ToString (),
                TokenSecret = Guid.NewGuid ().ToString (),
            };
            repo.SaveToken (token1);

            var token2 = repo.GetToken (token1.Token);

            Assert.AreEqual (token1.ConsumerKey, token2.ConsumerKey);
            Assert.AreEqual (token1.Realm, token2.Realm);
            Assert.AreEqual (token1.UserName, token2.UserName);
            Assert.AreEqual (token1.ExpiryDate, token2.ExpiryDate);
            Assert.AreEqual (token1.Token, token2.Token);
            Assert.AreEqual (token1.TokenSecret, token2.TokenSecret);
        }
コード例 #12
0
 public void SaveAccessToken(AccessToken accessToken)
 {
     _sessionState["access_token"] = accessToken;
 }
コード例 #13
0
 public FixedValueTokenRepository(string requestToken, string requestTokenSecret, string accessToken, string accessTokenSecret)
 {
     _requestToken = new RequestToken { Token = requestToken, TokenSecret = requestTokenSecret };
     _accessToken = new AccessToken { Token = accessToken, TokenSecret = accessTokenSecret };
 }
コード例 #14
0
 public void SaveAccessToken(AccessToken accessToken)
 {
     throw new NotImplementedException("The access token cannot be altered when using the FixedValueTokenRepository");
 }
コード例 #15
0
		public ConsumerRequestTests()
		{
			context = new OAuthContext {RequestMethod = "POST", RawUri = new Uri("http://localhost/svc")};
			consumerContext = new OAuthConsumerContext {ConsumerKey = "key", ConsumerSecret = "secret", SignatureMethod = SignatureMethod.PlainText};
			accessToken = new AccessToken();
		}
コード例 #16
0
ファイル: OAuthSession.cs プロジェクト: Bitwix/XeroAPI.Net
    private static void AssertValidAccessToken(AccessToken token)
    {
        if (token == null)
        {
            throw new MissingTokenException("The access token could not be obtained");
        }

        string expiryDateString = token.ExpiryDateUtc.HasValue ? token.ExpiryDateUtc.ToString() : "n/a";
        string usableTimespan = token.SessionTimespan.ToString();

        Debug.WriteLine(string.Format("Access token {0} will last for {1} and will expire at {2} UTC.", token.Token, usableTimespan, expiryDateString));
    }
コード例 #17
0
ファイル: OAuthService.cs プロジェクト: Dynalon/Rainy
        private AccessToken GenerateAccessToken(string username, string password, DateTime? expiry = null)
        {
            if (!expiry.HasValue)
                expiry = DateTime.Now.AddYears (99);

            var rng = new RNGCryptoServiceProvider ();
            string access_token_secret = rng.Create256BitLowerCaseHexKey ();
            string token_key = rng.Create256BitLowerCaseHexKey ();

            // the token is the master key encrypted with the token key
            string access_token_token;
            using (var db = connFactory.OpenDbConnection ()) {
                DBUser user = db.First<DBUser> (u => u.Username == username);
                string master_key = user.GetPlaintextMasterKey (password).ToHexString ();
                access_token_token = master_key.EncryptWithKey (token_key, user.MasterKeySalt);
            }

            var access_token = new AccessToken () {
                ConsumerKey = "anyone",
                Realm = "Rainy",
                Token = access_token_token,
                TokenSecret = access_token_secret,
                UserName = username,
                ExpiryDate = expiry.Value
            };
            access_token.SetTokenKey (token_key);
            return access_token;
        }
コード例 #18
0
        public Response DoRequest()
        {
            OAuthConsumerContext consumerContext = new OAuthConsumerContext
            {
                ConsumerKey = Constants.OAuth.ConsumerKey,
                ConsumerSecret = Constants.OAuth.ConsumerSecret,
                SignatureMethod = Constants.OAuth.SignatureMethod,
            };

            OAuthSession session = new OAuthSession(
                consumerContext,
                Constants.OAuth.RequestTokenURL,
                Constants.OAuth.AuthorizeURL,
                Constants.OAuth.AccessTokenURL);

            string tokenCookie = null;
            ctx.Request.Cookies.TryGetValue(Constants.Cookies.OAuthTokenCookie, out tokenCookie);
            string secretCookie = null;
            ctx.Request.Cookies.TryGetValue(Constants.Cookies.OAuthSecretCookie, out secretCookie);

            if (!forceReauth && !string.IsNullOrWhiteSpace(tokenCookie) && !string.IsNullOrWhiteSpace(secretCookie))
            {
                AccessToken accessToken = new AccessToken();
                accessToken.Token = tokenCookie;
                accessToken.TokenSecret = secretCookie;

                session.AccessToken = accessToken;
            }
            else
            {
                NameValueCollection queryStringParameters = Utilities.GetQueryStringParameters(ctx, new string[] { "oauth_token", "oauth_verifier" });

                if (queryStringParameters.Count == 2)
                {
                    // Re-create the request token from the callback request from Ravelry post-user-authentication.
                    RequestToken requestToken = new RequestToken();
                    requestToken.Token = queryStringParameters["oauth_token"];

                    try
                    {
                        // TODO: Ravelry fails to accept the token here.  Debugging with them.
                        // Exchange the temporary request token for an access token which can be used to access user data.  Uses "GET".
                        IToken accessToken = session.ExchangeRequestTokenForAccessToken(requestToken, queryStringParameters["oauth_verifier"]);

                        // Save token data to cookies.
                        ctx.Response.AddCookie(new NancyCookie(Constants.Cookies.OAuthTokenCookie, accessToken.Token, true, true));
                        ctx.Response.AddCookie(new NancyCookie(Constants.Cookies.OAuthSecretCookie, accessToken.TokenSecret, true, true));
                    }
                    catch (Exception e)
                    {
                        Utilities.SetException(ctx, e);
                        return null;
                    }
                }
                else
                {
                    // Retrieve a request token from Ravelry.
                    session.CallbackUri = new System.Uri(Constants.OAuth.CallbackURL);
                    IToken requestToken = session.GetRequestToken();

                    // Generate a user authorization URL for the request token.
                    string authorizationLink = session.GetUserAuthorizationUrlForToken(
                        requestToken,
                        Constants.OAuth.CallbackURL);

                    // Redirect to Ravelry.
                    return new RedirectResponse(authorizationLink);
                }
            }

            // Save the session to the context
            Utilities.SetAuthenticatedSession(ctx, session);

            return null;
        }
コード例 #19
0
ファイル: WBS.cs プロジェクト: stumpyfr/WBS.Net
 private AccessToken CreateAccessToken()
 {
     var accessToken = new AccessToken()
     {
         ConsumerKey = this.consumerKey,
         Token = this.token,
         TokenSecret = this.tokenSecret,
     };
     return accessToken;
 }
コード例 #20
0
        public string GetAccessTokenSecret(IOAuthContext context)
        {
            AccessToken token = GetAccessToken(context);

            return(token.TokenSecret);
        }
コード例 #21
0
ファイル: WBS.cs プロジェクト: stumpyfr/WBS.Net
        private async void UpdateProfil()
        {
            await Task.Run(() =>
            {
                var accessToken = new AccessToken()
                {
                    ConsumerKey = this.consumerKey,
                    Token = this.token,
                    TokenSecret = this.tokenSecret,
                };

                string responseText = session.Request(accessToken).Get().ForUrl(string.Format("http://wbsapi.withings.net/user?action=getbyuserid&userid={0}", userId)).ToString();
                DataContractJsonSerializer sr = new DataContractJsonSerializer(typeof(InternalUser));
                Byte[] bytes = Encoding.Unicode.GetBytes(responseText);
                using (MemoryStream stream = new MemoryStream(bytes))
                {
                    InternalUser user = sr.ReadObject(stream) as InternalUser;
                    this.User = new User()
                    {
                        FirstName = user.body.users.First().firstname,
                        LastName = user.body.users.First().lastname,
                        Id = user.body.users.First().id,
                        Gender = (GenderType)user.body.users.First().gender,
                        ShortName = user.body.users.First().shortname,
                        Birthdate = FromUnixTime(user.body.users.First().birthdate),
                    };
                }
            });
        }