private IIdentity AuthenticateWithValidToken(IHttpRequestDescriptor request, Token currentToken) { var currentExpire = currentToken.Expire.ToUniversalTime(); Token token; if (IsProlongable(request)) { token = TokenService.Prolongate(currentToken); } else { token = currentToken; } var resultExpire = token.Expire.ToUniversalTime(); if (Logg.IsForDebug()) { Logg.Debug( new {request = request.Uri.ToString(), token = "upgrade", from = currentExpire, to = resultExpire} .stringify()); } var result = BuildIdentity(token); return result; }
private Identity BuildIdentity(Token token) { var result = new Identity { Token = token, Name = token.User, IsAuthenticated = true, AuthenticationType = "form", IsAdmin = token.IsAdmin }; var errormessage = ""; var user = UserService.GetUser(token.User); if (null != user) { result.User = user; result.IsAdmin = user.IsAdmin; var userstate = UserStateChecker.GetActivityState(user); if (userstate != UserActivityState.Ok) { result.IsError = true; errormessage += userstate.ToStr() + "; "; } } if (!string.IsNullOrWhiteSpace(token.ImUser)) { var imtoken = new Token {User = token.ImUser}; var imidentity = BuildIdentity(imtoken); result.ImpersonationSource = imidentity; if (!imidentity.IsAuthenticated) { result.IsError = true; errormessage += "not-auth impersonation; "; } else if (!imidentity.IsAdmin) { result.IsError = true; errormessage += "non-admin impersonation;"; } } if (result.IsError) { result.IsAuthenticated = false; result.Error = new SecurityException(errormessage); } return result; }
public void Performance() { CheckRate(i => { var token = new Token { User = "******", Created = new DateTime(2015, 1, 1, 0, 0, 0, DateTimeKind.Utc), Expire = new DateTime(2015, 1, 2, 0, 0, 0, DateTimeKind.Utc), Metrics = "test" }; var tokenenc = (TokenEncryptor)_container.Get<ITokenEncryptor>(); var tokenstr = tokenenc.Encrypt(token); var token2 = tokenenc.Decrypt(tokenstr); }); }
public void CanEncryptAndDecrypt() { var token = new Token { User = "******", Created = new DateTime(2015, 1, 1, 0, 0, 0, DateTimeKind.Utc), Expire = new DateTime(2015, 1, 2, 0, 0, 0, DateTimeKind.Utc), Metrics = "test" }; var tokenenc = (TokenEncryptor)_container.Get<ITokenEncryptor>(); Assert.AreEqual("1234567", tokenenc.Encryptor.KeySource); var tokenstr = tokenenc.Encrypt(token); Console.WriteLine(tokenstr); var token2 = tokenenc.Decrypt(tokenstr); Console.WriteLine(token2.stringify()); Assert.AreEqual(token.stringify(), token2.stringify()); }