Esempio n. 1
0
 public void BypassOAuthForTemporaryAccessToken()
 {
     var restClient = new JsonServiceClient (testServer.ListenUrl);
     var req = new OAuthTemporaryAccessTokenRequest ();
     req.Username = RainyTestServer.TEST_USER;
     req.Password = RainyTestServer.TEST_PASS;
     var token = restClient.Post<OAuthTemporaryAccessTokenResponse> ("/oauth/temporary_access_token", req);
     Assert.That (!token.AccessToken.StartsWith ("oauth_"));
     Assert.GreaterOrEqual (400, token.AccessToken.Length);
 }
Esempio n. 2
0
        public void BypassOAuthForTemporaryAccessToken()
        {
            var restClient = new JsonServiceClient(testServer.ListenUrl);
            var req        = new OAuthTemporaryAccessTokenRequest();

            req.Username = RainyTestServer.TEST_USER;
            req.Password = RainyTestServer.TEST_PASS;
            var token = restClient.Post <OAuthTemporaryAccessTokenResponse> ("/oauth/temporary_access_token", req);

            Assert.That(!token.AccessToken.StartsWith("oauth_"));
            Assert.GreaterOrEqual(400, token.AccessToken.Length);
        }
Esempio n. 3
0
        public object Post(OAuthTemporaryAccessTokenRequest request)
        {
            string username = request.Username;
            string password = request.Password;

            if (request.Expiry == 0)
                request.Expiry = 60 * 24; // expiry = 1d
            if (request.Expiry >= 43200) // >= 30d
                throw new InvalidRequestDtoException {ErrorMessage = "Expiry cannot exceed 30 days (43200 minutes)"};

            DateTime expiry = DateTime.Now.AddMinutes (request.Expiry);

            try {
                if (userIsAllowed (username, password, out username)) {
                    var access_token = GenerateAccessToken (username, password, expiry);
                    // save the access token
                    var db_access_token = access_token.ToDBAccessToken ();
                    // shorten the token for crypto
                    db_access_token.Token = access_token.Token.ToShortToken ();
                    using (var db = connFactory.OpenDbConnection ()) {
                        db.Save<DBAccessToken> (db_access_token);
                    }
                    return new OAuthTemporaryAccessTokenResponse {
                        AccessToken = access_token.Token,
                        ValidUntil = expiry
                    };
                } else
                    throw new Rainy.ErrorHandling.UnauthorizedException ();
            } catch (Exception e) {
                Logger.Debug(e.Message);
                throw e;
            }
        }