Пример #1
0
 public object ResolveTokenData(Type dataType, string token)
 {
     try
     {
         object       result;
         TokenStorage tokenStorage = new TokenStorage
         {
             Token = token.ToString(),
             Type  = dataType
         };
         if (_tokenCache.TryGetValue(tokenStorage, out result))
         {
             return(result);
         }
         lock (this)
         {
             result = SafeLoadData(Path.Combine(Application.persistentDataPath,
                                                string.Format("{0}_{1}", Base64Encode(dataType.AssemblyQualifiedName), token)));
             _tokenCache[tokenStorage] = result;
             return(result);
         }
     }
     catch (Exception)
     {
         return(dataType.GetDefault());
     }
 }
Пример #2
0
        public async Task <IHttpActionResult> NewToken(Account account)
        {
            UserDTO user;

            try
            {
                user = repository.AuthenticateUser(account);
                Authentication auth = null;
                if (user == null)
                {
                    response = NotFound();
                }
                else
                {
                    var token = await TokenGenerator.Generate();

                    auth = new Authentication {
                        token = token, user = user
                    };
                    TokenStorage.GetInstance().SaveToken(auth.token);
                    response = Ok(auth);
                }
            }
            catch (Exception ex)
            {
                // Write the excption to a log
                response = InternalServerError();
            }

            return(response);
        }
Пример #3
0
        public void StoreExceptionTest()
        {
            var dataConnection = MockRepository.GenerateStub <IDataConnection>();
            var dateHelper     = new DateHelper();

            var tokenStorage = new TokenStorage(dataConnection, dateHelper);

            var userId          = 1;
            var userIdSalt      = new byte[24];
            var tokenSalt       = new byte[24];
            var encryptedGuid   = "encrypted-guid";
            var encryptedUserId = "dummy-encrypted-user-id";
            var issuedAt        = new DateTime(2014, 11, 21, 14, 54, 33);

            var hashedToken = new PasswordHash.HashInfo
            {
                Hash       = encryptedGuid,
                Iterations = 1000,
                Method     = "sha1",
                Salt       = Convert.ToBase64String(tokenSalt)
            };

            // stub fake calls
            dataConnection.Stub(x => x.Execute(null, null)).Throw(new Exception()).IgnoreArguments();

            Assert.Throws <Exception>(() => tokenStorage.StoreToken(userId, hashedToken, encryptedUserId, userIdSalt, issuedAt));
        }
Пример #4
0
        public void RetrieveTokenExceptionTest()
        {
            // declare mocks
            var dataConnection = MockRepository.GenerateStub <IDataConnection>();

            // declare objects
            var dateHelper      = new DateHelper();
            var encryptedUserId = "dummy-encrypted-user-id";
            var tokenStorage    = new TokenStorage(dataConnection, dateHelper);


            // stub fake calls
            dataConnection.Stub(x => x.Query <TokenStorage.TokenStorageDb>(null, null)).Throw(new Exception()).IgnoreArguments();

            PasswordHash.HashInfo hashedTokenResult;
            string encryptedUserIdResult;

            byte[]   userIdSaltResult;
            DateTime issuedAtResult;
            DateTime refreshedResult;

            var result = tokenStorage.RetrieveToken(encryptedUserId, out hashedTokenResult, out encryptedUserIdResult, out userIdSaltResult, out issuedAtResult, out refreshedResult);

            Assert.IsFalse(result);
        }
Пример #5
0
        public void GenerateToken()
        {
            var token = TokenGenerator.GenerateToken("1231", "54654", 123);

            TokenStorage.StoreToken(token);
            var token1 = TokenStorage.GetData(token.Token);
        }
Пример #6
0
        // PUT: api/Login/5
        public async Task <IHttpActionResult> PostAsync([FromBody] Authentication login)
        {
            IHttpActionResult response = null;
            AuthenticatedUser authUser;

            try
            {
                authUser = repository.AuthenticateUser(login);
                if (authUser == null)
                {
                    response = Content(HttpStatusCode.NotFound, "User not found");;
                }
                else
                {
                    var token = await TokenGenerator.Generate();

                    authUser.Token = token;
                    TokenStorage.GetInstance().SaveToken(authUser.Token);
                    response = Ok(authUser);
                }
            }
            catch (Exception ex)
            {
                // Write the excption to a log
                response = InternalServerError();
            }

            return(response);
        }
Пример #7
0
 private void InitNode(IPEndPoint ipEndpoint)
 {
     _server = new NodeServer(ipEndpoint);
     _server.OnMaliciousMessage += CheckPossibleMaliciousMessage;
     _tokenStorage = new TokenStorage();
     BucketList    = new BucketList(Id, 20);
     Storage       = new MemoryInfoHashStorage(20);
     _server.Start(this);
 }
Пример #8
0
        private async Task SetAuthorizationAsync(string bearerToken, bool isPersistent, bool isStore = true)
        {
            BearerToken       = bearerToken;
            Api.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);

            if (isStore)
            {
                await TokenStorage.SetAsync(bearerToken, isPersistent);
            }

            UserProperties.ClearOnUserChanged();
            UserChanged?.Invoke();
        }
Пример #9
0
        private async Task ClearAuthorizationAsync()
        {
            if (BearerToken != null)
            {
                BearerToken       = null;
                UserId            = null;
                UserName          = null;
                Api.Authorization = null;
                await TokenStorage.ClearAsync();

                UserChanged?.Invoke();
                UserInfoChanged?.Invoke();
            }
        }
Пример #10
0
 public IHttpActionResult PutAsync([FromBody] Model.AuthenticatedUser login)
 {
     try
     {
         TokenStorage.GetInstance().RemoveToken(login.Token);
         AuthenticatedUser authUser = new AuthenticatedUser();
         return(Ok(authUser));
     }
     catch (Exception ex)
     {
         // Write the excption to a log
         return(InternalServerError());
     }
 }
Пример #11
0
        protected override async Task OnInitializedAsync()
        {
            Navigator.LocationChanged += OnLocationChanged;

            string token = Navigator.FindQueryParameter("token");

            if (!String.IsNullOrEmpty(token))
            {
                IsTokenProcessing = true;

                try
                {
                    var response = await Api.LoginWithTokenAsync(new LoginWithTokenRequest()
                    {
                        Token = token
                    });

                    if (LoadUserInfo(response.BearerToken))
                    {
                        await SetAuthorizationAsync(response.BearerToken, false);
                    }

                    Navigator.OpenTimeline();
                }
                catch (AggregateException e) when(e.InnerException is HttpRequestException http && http.StatusCode == HttpStatusCode.NotFound)
                {
                    Console.WriteLine(e.GetType().FullName);
                    Navigator.OpenLogin();
                }
                finally
                {
                    IsTokenProcessing = false;
                }
            }

            if (BearerToken == null)
            {
                string bearerToken = await TokenStorage.FindAsync();

                if (LoadUserInfo(bearerToken))
                {
                    await SetAuthorizationAsync(bearerToken, false, false);
                }
            }

            initializationSource.SetResult(null);

            await base.OnInitializedAsync();
        }
Пример #12
0
        public HomeController(TokenStorage tokenStorage)
        {
            _tokenStorage = tokenStorage;
            Connection c = new Connection();

            if (c.Database.EnsureCreated())
            {
                _con = c;
                _db  = new Database(c);
            }
            else
            {
                throw new Exception("A white little polar animal has come!");
            }
        }
        public async Task OnTurn(ITurnContext context, MiddlewareSet.NextDelegate next)
        {
            var authToken = TokenStorage.LoadConfiguration(context.Activity.Conversation.Id);

            if (authToken == null)
            {
                if (context.Activity.UserHasJustSentMessage() || context.Activity.UserHasJustJoinedConversation())
                {
                    var conversationReference = TurnContext.GetConversationReference(context.Activity);

                    var serializedCookie = WebUtility.UrlEncode(JsonConvert.SerializeObject(conversationReference));

                    var signInUrl = AzureAdExtensions.GetUserConsentLoginUrl(AzureAdTenant, AppClientId, AppRedirectUri, PermissionsRequested, serializedCookie);

                    var activity = context.Activity.CreateReply();
                    activity.AddSignInCard(signInUrl);

                    await context.SendActivity(activity);
                }
            }
            else if (authToken.ExpiresIn < DateTime.Now.AddMinutes(-10))
            {
                if (context.Activity.UserHasJustSentMessage() || context.Activity.UserHasJustJoinedConversation())
                {
                    var client      = new HttpClient();
                    var accessToken = await AzureAdExtensions.GetAccessTokenUsingRefreshToken(client, AzureAdTenant, authToken.RefreshToken, AppClientId, AppRedirectUri, AppClientSecret, PermissionsRequested);

                    // have to save it
                    authToken = new ConversationAuthToken(context.Activity.Conversation.Id)
                    {
                        AccessToken  = accessToken.accessToken,
                        RefreshToken = accessToken.refreshToken,
                        ExpiresIn    = accessToken.refreshTokenExpiresIn
                    };
                    TokenStorage.SaveConfiguration(authToken);

                    // make the authtoken available to downstream pipeline components
                    context.Services.Add(AUTH_TOKEN_KEY, authToken);
                    await next();
                }
            }
            else
            {
                // make the authtoken available to downstream pipeline components
                context.Services.Add(AUTH_TOKEN_KEY, authToken);
                await next();
            }
        }
Пример #14
0
        public void RefreshTokenTest()
        {
            var dataConnection = new DataConnection();
            var dateHelper     = new DateHelper();

            var tokenStorage = new TokenStorage(dataConnection, dateHelper);

            var userId          = 101;
            var userIdSalt      = new byte[24];
            var tokenSalt       = new byte[24];
            var encryptedGuid   = "encrypted-guid";
            var encryptedUserId = "dummy-encrypted-user-id";
            var issuedAt        = new DateTime(2014, 11, 21, 14, 54, 33);

            var hashedToken = new PasswordHash.HashInfo
            {
                Hash       = encryptedGuid,
                Iterations = 1000,
                Method     = "sha1",
                Salt       = Convert.ToBase64String(tokenSalt)
            };

            Assert.IsTrue(tokenStorage.StoreToken(userId, hashedToken, encryptedUserId, userIdSalt, issuedAt));

            Assert.IsTrue(tokenStorage.RefreshToken(userId, hashedToken.Hash, new DateTime(2014, 11, 21, 15, 55, 22)));

            PasswordHash.HashInfo hashedTokenResult;
            string encryptedUserIdResult;

            byte[]   userIdSaltResult;
            DateTime issuedAtResult;
            DateTime refreshedResult;
            var      retrieveTokenSuccess = tokenStorage.RetrieveToken(encryptedUserId, out hashedTokenResult, out encryptedUserIdResult, out userIdSaltResult, out issuedAtResult, out refreshedResult);

            Assert.IsTrue(retrieveTokenSuccess);
            Assert.AreEqual(hashedToken.Salt, hashedTokenResult.Salt);
            Assert.AreEqual(hashedToken.Hash, hashedTokenResult.Hash);
            Assert.AreEqual(hashedToken.Method, hashedTokenResult.Method);
            Assert.AreEqual(encryptedUserId, encryptedUserIdResult);
            Assert.AreEqual(userIdSalt, userIdSaltResult);
            Assert.AreEqual(new DateTime(2014, 11, 21, 14, 54, 33), issuedAtResult);
            Assert.AreEqual(new DateTime(2014, 11, 21, 15, 55, 22), refreshedResult);

            // check if using a wrong id/encryptid fails (it should fail)
            Assert.IsFalse(tokenStorage.RefreshToken(102, hashedToken.Hash, new DateTime(2014, 11, 21, 15, 55, 22)));
            Assert.IsFalse(tokenStorage.RefreshToken(userId, hashedToken.Hash + 'a', new DateTime(2014, 11, 21, 15, 55, 22)));
        }
Пример #15
0
        public void StoreAndRetrieveTokenTest()
        {
            TestHelper.DeleteTestData();
            TestHelper.InsertTestData();

            var dataConnection = new DataConnection();
            var dateHelper     = new DateHelper();

            var tokenStorage = new TokenStorage(dataConnection, dateHelper);

            var userId          = 1;
            var userIdSalt      = new byte[24];
            var tokenSalt       = new byte[24];
            var encryptedGuid   = "encrypted-guid";
            var encryptedUserId = "dummy-encrypted-user-id";
            var issuedAt        = new DateTime(2014, 11, 21, 14, 54, 33);


            var hashedToken = new PasswordHash.HashInfo
            {
                Hash       = encryptedGuid,
                Iterations = 1000,
                Method     = "sha1",
                Salt       = Convert.ToBase64String(tokenSalt)
            };

            Assert.IsTrue(tokenStorage.StoreToken(userId, hashedToken, encryptedUserId, userIdSalt, issuedAt));

            PasswordHash.HashInfo hashedTokenResult;
            string encryptedUserIdResult;

            byte[]   userIdSaltResult;
            DateTime issuedAtResult;
            DateTime refreshedResult;
            var      retrieveTokenSuccess = tokenStorage.RetrieveToken(encryptedUserId, out hashedTokenResult, out encryptedUserIdResult, out userIdSaltResult, out issuedAtResult, out refreshedResult);

            Assert.IsTrue(retrieveTokenSuccess);
            Assert.AreEqual(hashedToken.Salt, hashedTokenResult.Salt);
            Assert.AreEqual(hashedToken.Hash, hashedTokenResult.Hash);
            Assert.AreEqual(hashedToken.Method, hashedTokenResult.Method);
            Assert.AreEqual(encryptedUserId, encryptedUserIdResult);
            Assert.AreEqual(userIdSalt, userIdSaltResult);
            Assert.AreEqual(new DateTime(2014, 11, 21, 14, 54, 33), issuedAtResult);
            Assert.AreEqual(new DateTime(2014, 11, 21, 14, 54, 33), refreshedResult);
        }
Пример #16
0
        public void VerifyTokenExistenceTest()
        {
            TestHelper.DeleteTestData();
            TestHelper.InsertTestData();

            //VerifyTokenExistence
            var dataConnection = new DataConnection();
            var dateHelper     = new DateHelper();

            var tokenStorage = new TokenStorage(dataConnection, dateHelper);

            var userId          = 101;
            var userIdSalt      = new byte[24];
            var tokenSalt       = new byte[24];
            var encryptedGuid   = "encrypted-guid";
            var encryptedUserId = "dummy-encrypted-user-id";
            var issuedAt        = new DateTime(2014, 11, 21, 14, 54, 33);

            var hashedToken = new PasswordHash.HashInfo
            {
                Hash       = encryptedGuid,
                Iterations = 1000,
                Method     = "sha1",
                Salt       = Convert.ToBase64String(tokenSalt)
            };

            Assert.IsTrue(tokenStorage.StoreToken(userId, hashedToken, encryptedUserId, userIdSalt, issuedAt));

            string   hashedTokenResult;
            DateTime issuedAtResult;
            DateTime refreshedResult;
            var      verifyTokenSuccess = tokenStorage.VerifyTokenExistence(userId, out hashedTokenResult, out issuedAtResult, out refreshedResult);

            Assert.IsTrue(verifyTokenSuccess);
            Assert.AreEqual(encryptedGuid, hashedTokenResult);
            Assert.AreEqual(new DateTime(2014, 11, 21, 14, 54, 33), issuedAtResult);
            Assert.AreEqual(new DateTime(2014, 11, 21, 14, 54, 33), refreshedResult);

            verifyTokenSuccess = tokenStorage.VerifyTokenExistence(102, out hashedTokenResult, out issuedAtResult, out refreshedResult);

            Assert.IsFalse(verifyTokenSuccess);
            Assert.AreEqual(null, hashedTokenResult);
            Assert.AreEqual(new DateTime(), issuedAtResult);
            Assert.AreEqual(new DateTime(), refreshedResult);
        }
        static void Main(string[] args)
        {
            try
            {
                ITokenStorage tokenStorage = new TokenStorage();
                IEnumerable <ResourceType> resourceTypes = Enum.GetValues(typeof(ResourceType)).Cast <ResourceType>();
                foreach (ResourceType resourceType in resourceTypes)
                {
                    string accessToken = tokenStorage.GetAccessToken(resourceType);
                    DisplayAccessToken(resourceType, accessToken);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.WriteLine("Please enter any key to exit...");
            Console.ReadKey();
        }
Пример #18
0
        public virtual PowerTableRequest ExtractRequest(ControllerContext context)
        {
            if (_request != null)
            {
                return(_request);
            }

            if (context.HttpContext.Request.HttpMethod == "GET")
            {
                var token = context.HttpContext.Request.QueryString["q"];
                _request = TokenStorage.Lookup(token);
                return(_request);
            }

            var request = context.RequestContext.HttpContext.Request;

            request.InputStream.Seek(0, SeekOrigin.Begin);
            string jsonData = new StreamReader(request.InputStream).ReadToEnd();

            _request = JsonConvert.DeserializeObject <PowerTableRequest>(jsonData);
            _request.Configurator = _configuration;
            return(_request);
        }
Пример #19
0
 protected bool Equals(TokenStorage other)
 {
     return(Equals(Type, other.Type) && string.Equals(Token, other.Token));
 }