Пример #1
0
 public Games(LoginContext loginContext, RestClient client, string cookie)
 {
     this.client       = client;
     this.loginContext = loginContext;
     this.cookie       = cookie;
     this.GameId       = loginContext.gameId;
 }
 public CartControllerTest()
 {
     LoginContext.GetInstance().Reset();
     cartRequest = new CartRequest {
         ProductId = "1", UserId = "1"
     };
 }
Пример #3
0
        public virtual KernelTransaction NewInstance(KernelTransaction.Type type, LoginContext loginContext, long timeout)
        {
            AssertCurrentThreadIsNotBlockingNewTransactions();
            SecurityContext securityContext = loginContext.Authorize(_tokenHolders.propertyKeyTokens().getOrCreateId, _currentDatabaseName);

            try
            {
                while (!_newTransactionsLock.readLock().tryLock(1, TimeUnit.SECONDS))
                {
                    AssertRunning();
                }
                try
                {
                    AssertRunning();
                    TransactionId lastCommittedTransaction = _transactionIdStore.LastCommittedTransaction;
                    KernelTransactionImplementation tx     = _localTxPool.acquire();
                    StatementLocks statementLocks          = _statementLocksFactory.newInstance();
                    tx.Initialize(lastCommittedTransaction.TransactionIdConflict(), lastCommittedTransaction.CommitTimestamp(), statementLocks, type, securityContext, timeout, _userTransactionIdCounter.incrementAndGet());
                    return(tx);
                }
                finally
                {
                    _newTransactionsLock.readLock().unlock();
                }
            }
            catch (InterruptedException ie)
            {
                Thread.interrupted();
                throw new TransactionFailureException("Fail to start new transaction.", ie);
            }
        }
 public ReviewControllerTest()
 {
     LoginContext.GetInstance().Reset();
     reviewRequest = new ReviewRequest {
         CartItemId = "1", ProductId = "1", UserId = "1"
     };
 }
Пример #5
0
 public IHttpActionResult GetAllCartsByUser()
 {
     try
     {
         string token = ControllerHelper.GetTokenFromRequest(Request);
         ControllerHelper.ValidateUserRole(Request, new string[] { ESportUtils.CLIENT_ROLE });
         UserContextDTO userContext = LoginContext.GetInstance().GetUserContextByToken(token);
         CartRequest    cartRequest = new CartRequest {
             UserId = userContext.UserDTO.UserId
         };
         List <CartDTO>     cartsDTOResult = cartService.GetAllCartsByUser(cartRequest);
         ControllerResponse response       = ControllerHelper.CreateSuccessResponse("Carritos");
         response.Data = cartsDTOResult;
         return(Ok(response));
     }
     catch (BadRequestException e)
     {
         return(CreateBadResponse(e.Message));
     }
     catch (RepositoryException e)
     {
         return(CreateBadResponse(e.Message));
     }
     catch (OperationException e)
     {
         return(CreateBadResponse(e.Message));
     }
     catch (Exception)
     {
         return(CreateBadResponse("Ocurrió un error al obtener carritos"));
     }
 }
Пример #6
0
        public ActionResult Nuevo(Usuario model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    using (LoginContext db = new LoginContext())
                    {
                        string cadenaEncriptada = Encrypt.GetMD5(model.Password);

                        var oUsu = new Usuario();
                        oUsu.Nombre    = model.Nombre;
                        oUsu.Apellido  = model.Apellido;
                        oUsu.Direccion = model.Direccion;
                        oUsu.RoldID    = model.RoldID;
                        oUsu.UserName  = model.UserName;
                        oUsu.Password  = cadenaEncriptada;

                        db.Usuarios.Add(oUsu);
                        db.SaveChanges();
                    }
                    return(Redirect("/"));
                }
                return(View(model));
            }catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Пример #7
0
 public IHttpActionResult CancelCart()
 {
     try
     {
         ControllerHelper.ValidateUserRole(Request, new string[] { ESportUtils.CLIENT_ROLE });
         string      token       = ControllerHelper.GetTokenFromRequest(Request);
         CartRequest cartRequest = new CartRequest( )
         {
             UserId = ControllerHelper.GetUserIdFromToken(token)
         };
         cartService.CancelCart(cartRequest);
         UserContextDTO userContext = GetUserContextFromRequest(Request);
         userContext.PendingCart = null;
         LoginContext.GetInstance().SaveContext(userContext);
         ControllerResponse response = ControllerHelper.CreateSuccessResponse("El carrito se cancelo satisfactoriamente");
         response.Data = userContext;
         return(Ok(response));
     }
     catch (BadRequestException e)
     {
         return(CreateBadResponse(e.Message));
     }
     catch (RepositoryException e)
     {
         return(CreateBadResponse(e.Message));
     }
     catch (OperationException e)
     {
         return(CreateBadResponse(e.Message));
     }
     catch (Exception)
     {
         return(CreateBadResponse("Ocurrió un error al cancelar carrito"));
     }
 }
Пример #8
0
        /// <summary>Log the details of a login context</summary>
        /// <param name="name">name to assert that the user is logged in as</param>
        /// <param name="loginContext">the login context</param>
        public static void LogLoginDetails(string name, LoginContext loginContext)
        {
            NUnit.Framework.Assert.IsNotNull("Null login context", loginContext);
            Subject subject = loginContext.GetSubject();

            Log.Info("Logged in as {}:\n {}", name, subject);
        }
Пример #9
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Before public void setUp() throws Throwable
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void SetUp()
        {
            TestGraphDatabaseFactory s = new TestEnterpriseGraphDatabaseFactory();

            _db = ( GraphDatabaseFacade )s.NewImpermanentDatabaseBuilder(TestDirectory.storeDir()).setConfig(SecuritySettings.property_level_authorization_enabled, "true").setConfig(SecuritySettings.property_level_authorization_permissions, "Agent=alias,secret").setConfig(SecuritySettings.procedure_roles, "test.*:procRole").setConfig(GraphDatabaseSettings.auth_enabled, "true").newGraphDatabase();
            EnterpriseAuthAndUserManager authManager = ( EnterpriseAuthAndUserManager )_db.DependencyResolver.resolveDependency(typeof(EnterpriseAuthManager));
            Procedures procedures = _db.DependencyResolver.resolveDependency(typeof(Procedures));

            procedures.RegisterProcedure(typeof(TestProcedure));
            EnterpriseUserManager userManager = authManager.UserManager;

            userManager.NewUser("Neo", password("eon"), false);
            userManager.NewUser("Smith", password("mr"), false);
            userManager.NewUser("Jones", password("mr"), false);
            userManager.NewUser("Morpheus", password("dealwithit"), false);

            userManager.NewRole("procRole", "Jones");
            userManager.NewRole("Agent", "Smith", "Jones");

            userManager.AddRoleToUser(PredefinedRoles.ARCHITECT, "Neo");
            userManager.AddRoleToUser(PredefinedRoles.READER, "Smith");
            userManager.AddRoleToUser(PredefinedRoles.READER, "Morpheus");

            _neo      = authManager.Login(authToken("Neo", "eon"));
            _smith    = authManager.Login(authToken("Smith", "mr"));
            _jones    = authManager.Login(authToken("Jones", "mr"));
            _morpheus = authManager.Login(authToken("Morpheus", "dealwithit"));
        }
Пример #10
0
        public ActionResult ResetPassword(ResetPasswordModel resetModel)
        {
            string Message = "";
            bool   status  = false;

            if (ModelState.IsValid)
            {
                using (LoginContext context = new LoginContext())
                {
                    var user = context.Users.Where(u => u.ResetPasswordCode == resetModel.ResetCode).FirstOrDefault();
                    if (user != null)
                    {
                        user.Password          = Crypto.Hash(resetModel.NewPassword);
                        user.ResetPasswordCode = ""; //this line for no one can use the same email for multipe times to reset pass

                        context.Configuration.ValidateOnSaveEnabled = false;
                        context.SaveChanges();
                        status  = true;
                        Message = "New password is updated successfully";
                    }
                }
            }
            else
            {
                Message = "Something Invalid";
            }

            ViewBag.Status  = status;
            ViewBag.Message = Message;
            return(View(resetModel));
        }
        private void BuildLoginContext()
        {
            var dbContextOptions = new DbContextOptionsBuilder <LoginContext>()
                                   .UseInMemoryDatabase(databaseName: "invitations_tests")
                                   .Options;

            LoginContext         = new LoginContext(dbContextOptions);
            ClientId             = Guid.NewGuid();
            InvitationTemplateId = Guid.Parse("a2fc2212-253e-47c1-b847-27c10f83f7f5");
            LoginContext.Clients.Add(new Client()
            {
                Id = ClientId,
                AllowInvitationSignUp = true,
                ServiceDetails        = new ServiceDetails()
                {
                    ServiceName = "Acme Service",
                    ServiceTeam = "Acme Service Team",
                    PostPasswordResetReturnUrl = "https://serviceurl",
                    EmailTemplates             = new List <EmailTemplate>()
                    {
                        new EmailTemplate()
                        {
                            Name = "SignUpInvitation", TemplateId = InvitationTemplateId
                        }, new EmailTemplate()
                        {
                            Name = "LoginSignupError", TemplateId = InvitationTemplateId
                        }
                    }
                }
            });
            LoginContext.SaveChanges();
        }
Пример #12
0
 private void AssertFail(LoginContext subject, string query, string partOfErrorMsg)
 {
     assertThat(Execute(subject, query, r =>
     {
         Debug.Assert(!r.hasNext());
     }), containsString(partOfErrorMsg));
 }
Пример #13
0
        public ActionResult ForgetPassword(string EmailId)
        {
            string Message = "";

            using (LoginContext context = new LoginContext())
            {
                var account = context.Users.Where(a => a.Email == EmailId).FirstOrDefault();
                if (account != null)
                {
                    //generate reset password link
                    string resetCode = Guid.NewGuid().ToString();
                    SendVerificationlinkEmail(account.Email, resetCode, "resetPassCode", "ResetPassword");
                    account.ResetPasswordCode = resetCode;

                    context.Configuration.ValidateOnSaveEnabled = false; //this line for avoiding confirm pass not match issue , becus confirm not in db and validate
                                                                         //will throw error
                    context.SaveChanges();
                    Message = "Reset Password Link has been sent to your Email : " + EmailId;
                }
                else
                {
                    Message = "There is no aacount with this email";
                }
            }
            ViewBag.Message = Message;
            return(View());
        }
Пример #14
0
 private void AssertEmpty(LoginContext subject, string query)
 {
     assertThat(Execute(subject, query, r =>
     {
         Debug.Assert(!r.hasNext());
     }), equalTo(""));
 }
Пример #15
0
        public async Task Then_password_is_validated_correctly(string newpassword, bool expectedValidity)
        {
            var dbContextOptions = new DbContextOptionsBuilder <LoginContext>()
                                   .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                                   .Options;

            var _loginContext = new LoginContext(dbContextOptions);

            _loginContext.InvalidPasswords.Add(new InvalidPassword()
            {
                Password = "******"
            });
            _loginContext.InvalidPasswords.Add(new InvalidPassword()
            {
                Password = "******"
            });
            _loginContext.InvalidPasswords.Add(new InvalidPassword()
            {
                Password = "******"
            });
            await _loginContext.SaveChangesAsync();

            var validator = new CustomPasswordValidator <LoginUser>(Substitute.For <ILogger <CustomPasswordValidator <LoginUser> > >(), _loginContext);

            var userManager = new UserManager <LoginUser>(Substitute.For <IUserStore <LoginUser> >(), Substitute.For <IOptions <IdentityOptions> >(), Substitute.For <IPasswordHasher <LoginUser> >()
                                                          , Substitute.For <IEnumerable <IUserValidator <LoginUser> > >(), new List <IPasswordValidator <LoginUser> >(), Substitute.For <ILookupNormalizer>(), new IdentityErrorDescriber(), Substitute.For <IServiceProvider>(),
                                                          Substitute.For <ILogger <UserManager <LoginUser> > >());

            var result = await validator.ValidateAsync(userManager, new LoginUser(), newpassword);

            (result == IdentityResult.Success).Should().Be(expectedValidity);
        }
Пример #16
0
 /// <summary>
 /// Implements the SPNEGO authentication sequence interaction using the current default principal
 /// in the Kerberos cache (normally set via kinit).
 /// </summary>
 /// <param name="token">the authentication token being used for the user.</param>
 /// <exception cref="System.IO.IOException">if an IO error occurred.</exception>
 /// <exception cref="AuthenticationException">if an authentication error occurred.</exception>
 /// <exception cref="Org.Apache.Hadoop.Security.Authentication.Client.AuthenticationException
 ///     "/>
 private void DoSpnegoSequence(AuthenticatedURL.Token token)
 {
     try
     {
         AccessControlContext context = AccessController.GetContext();
         Subject subject = Subject.GetSubject(context);
         if (subject == null || (subject.GetPrivateCredentials <KerberosKey>().IsEmpty() &&
                                 subject.GetPrivateCredentials <KerberosTicket>().IsEmpty()))
         {
             Log.Debug("No subject in context, logging in");
             subject = new Subject();
             LoginContext login = new LoginContext(string.Empty, subject, null, new KerberosAuthenticator.KerberosConfiguration
                                                       ());
             login.Login();
         }
         if (Log.IsDebugEnabled())
         {
             Log.Debug("Using subject: " + subject);
         }
         Subject.DoAs(subject, new _PrivilegedExceptionAction_287(this));
     }
     catch (PrivilegedActionException ex)
     {
         // Loop while the context is still not established
         throw new AuthenticationException(ex.GetException());
     }
     catch (LoginException ex)
     {
         throw new AuthenticationException(ex);
     }
     AuthenticatedURL.ExtractToken(conn, token);
 }
Пример #17
0
 public IHttpActionResult RemoveItem(CartRequest cartRequest)
 {
     try
     {
         ControllerHelper.ValidateAndSetUserInCartRequest(Request, cartRequest);
         CartDTO        cartResult  = cartService.RemoveProduct(cartRequest);
         UserContextDTO userContext = GetUserContextFromRequest(Request);
         userContext.PendingCart = cartResult;
         LoginContext.GetInstance().SaveContext(userContext);
         ControllerResponse response = ControllerHelper.CreateSuccessResponse("El producto se eliminó del carrito satisfactoriamente");
         response.Data = userContext;
         return(Ok(response));
     }
     catch (BadRequestException e)
     {
         return(CreateBadResponse(e.Message));
     }
     catch (RepositoryException e)
     {
         return(CreateBadResponse(e.Message));
     }
     catch (OperationException e)
     {
         return(CreateBadResponse(e.Message));
     }
     catch (Exception)
     {
         return(CreateBadResponse("Ocurrió un error al eliminar producto del carrito"));
     }
 }
Пример #18
0
        public ActionResult Login(Account user)
        {
            //this action menthod is for handling POST
            using (var ctx = new LoginContext())
            {
                Account account = ctx.Accounts.Where(p => p.UserName.Equals(user.UserName) && p.Password.Equals(user.Password)).FirstOrDefault();

                if (account != null)
                {
                    if (user.IsRemembered == true)
                    {
                        Response.Cookies["UsernameCookie"].Value     = user.UserName;
                        Response.Cookies["PasswordCookie"].Value     = user.Password;
                        Response.Cookies["IsRememberedCookie"].Value = user.IsRemembered.ToString();
                    }
                    else
                    {
                        Response.Cookies["UsernameCookie"].Expires     = DateTime.Now.AddDays(-1);
                        Response.Cookies["PasswordCookie"].Expires     = DateTime.Now.AddDays(-1);
                        Response.Cookies["IsRememberedCookie"].Expires = DateTime.Now.AddDays(-1);
                    }

                    ctx.SaveChanges();
                    Session["LoggedUsername"] = user.UserName;
                    Session["StateOfLogin"]   = "******";
                    return(RedirectToAction("AfterLogin", "Login"));
                }
            }

            return(View(user));
        }
Пример #19
0
        public ActionResult AccountChooser()
        {
            LoginContext      AllLogins = new LoginContext();
            List <LoginModel> Users     = AllLogins.UserList.ToList();

            return(View(Users));
        }
Пример #20
0
 public async Task Arrange()
 {
     UserService.FindByEmail(Arg.Any <string>()).Returns(default(LoginUser));
     LoginContext.Clients.Add(new Client()
     {
         Id             = ClientId,
         ServiceDetails = new ServiceDetails()
         {
             PostPasswordResetReturnUrl = "https://returnurl",
             EmailTemplates             = new List <EmailTemplate>()
             {
                 new EmailTemplate()
                 {
                     Name = "PasswordResetNoAccount", TemplateId = Guid.NewGuid()
                 },
                 new EmailTemplate()
                 {
                     Name = "PasswordReset", TemplateId = Guid.NewGuid()
                 },
                 new EmailTemplate()
                 {
                     Name = "SignUpInvitation", TemplateId = Guid.NewGuid()
                 },
             }
         }
     });
     await LoginContext.SaveChangesAsync();
 }
        public async Task SetUp()
        {
            var dbContextOptions = new DbContextOptionsBuilder <LoginContext>()
                                   .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                                   .Options;

            _loginContext = new LoginContext(dbContextOptions);
            _loginContext.Clients.Add(new Data.Entities.Client()
            {
                IdentityServerClientId = "mvc", ServiceDetails = new ServiceDetails {
                    ServiceName = "Acme Service", SupportUrl = "https://acme.gov.uk/Support"
                }
            });
            await _loginContext.SaveChangesAsync();

            _interactionService = Substitute.For <IIdentityServerInteractionService>();
            _interactionService.GetLogoutContextAsync("logoutid").Returns(new IdentityServer4.Models.LogoutRequest("iframeurl", new LogoutMessage())
            {
                ClientId = "mvc", PostLogoutRedirectUri = "https://postlogouturi"
            });

            _userService = Substitute.For <IUserService>();

            var principal = new TestPrincipal(new Claim(JwtClaimTypes.Subject, "user123"));

            _eventService = Substitute.For <IEventService>();

            _httpContextAccessor = Substitute.For <IHttpContextAccessor>();
            _httpContextAccessor.HttpContext.User.Returns(principal);

            _handler = new LogoutHandler(_interactionService, _loginContext, _userService, _eventService, _httpContextAccessor);
        }
Пример #22
0
        //POST : /api/ApplicationUser/Login
        public async Task <IActionResult> Login(LoginContext model)
        {
            var user = await _userManager.FindByEmailAsync(model.Email) ?? await _userManager.FindByNameAsync(model.UserName);

            if (user != null && await _userManager.CheckPasswordAsync(user, model.Password))
            {
                //Get role assigned to the user
                var role = await _userManager.GetRolesAsync(user);

                IdentityOptions _options = new IdentityOptions();

                var tokenDescriptor = new SecurityTokenDescriptor
                {
                    Subject = new ClaimsIdentity(new Claim[]
                    {
                        new Claim("UserID", user.Id.ToString()),
                        new Claim(ClaimTypes.Role, role.FirstOrDefault()),
                        new Claim("FullName", role.FirstOrDefault())
                    }),
                    Expires            = DateTime.UtcNow.AddDays(1),
                    SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("vfvrbylhzybr18021")), SecurityAlgorithms.HmacSha256Signature)
                };
                var tokenHandler  = new JwtSecurityTokenHandler();
                var securityToken = tokenHandler.CreateToken(tokenDescriptor);
                var token         = tokenHandler.WriteToken(securityToken);
                return(Ok(new { token }));
            }
            else
            {
                return(BadRequest(new { message = "Username or password is incorrect." }));
            }
        }
Пример #23
0
        public TryLoginUser(User user)
        {
            LoginContext context = new LoginContext();

            User U = context.users.SingleOrDefault(u => u.Username == user.Username && u.Password == user.Password);

            if (U == null)
            {
                return;
            }

            if (U.UserType == "Administrator")
            {
                this.IsUser   = true;
                this.UserRoll = "Administrator";

                Program.IsAuthenticated = true;
                Program.UserRoll        = "Administrator";
                Program.User            = U.Username;
            }
            else if (U.UserType == "User")
            {
                this.IsUser   = true;
                this.UserRoll = "User";

                Program.IsAuthenticated = true;
                Program.UserRoll        = "User";
                Program.User            = U.Username;
            }
            else
            {
                Environment.Exit(0);
            }
        }
Пример #24
0
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public bool Login(LoginType type)
        {
            ILoginStrategy strategy = null;

            switch (type)
            {
            case LoginType.Email:
                strategy = new EmailLogin();
                break;

            case LoginType.Phone:
                strategy = new PhoneLogin();
                break;

            case LoginType.QrCode:
                strategy = new QrCodeLogin();
                break;
            }

            _loginContext = new LoginContext(strategy, this);
            JObject j = _loginContext.Login();

            //解析返回值
            AuthInfoHelper auth = new AuthInfoHelper(j);

            if (auth.Code == 200)
            {
                ID = auth.UserID;
                return(true);
            }

            return(false);
        }
Пример #25
0
        public virtual void TestServerLogin()
        {
            LoginContext loginContext = CreateLoginContextZookeeperLocalhost();

            loginContext.Login();
            loginContext.Logout();
        }
Пример #26
0
        // POST: AccountView

        public ActionResult AccountViewer(int empID)
        {
            LoginContext AllLogins = new LoginContext();
            LoginModel   User      = AllLogins.UserList.Single(Person => Person.ID == empID);

            return(View(User));
        }
        public void SetUp()
        {
            var dbContextOptions = new DbContextOptionsBuilder <LoginContext>()
                                   .UseInMemoryDatabase(databaseName: "CreatePasswordHandler_tests")
                                   .Options;

            LoginContext = new LoginContext(dbContextOptions);

            InvitationId = Guid.NewGuid();
            LoginContext.Invitations.Add(new Invitation()
            {
                Id         = InvitationId,
                Email      = "*****@*****.**",
                SourceId   = "ABC123",
                GivenName  = "GN1",
                FamilyName = "FN1"
            });
            LoginContext.SaveChanges();

            CallbackService = Substitute.For <ICallbackService>();

            UserService    = Substitute.For <IUserService>();
            NewLoginUserId = Guid.NewGuid();


            Handler = new CreatePasswordHandler(UserService, LoginContext, CallbackService);
        }
 public CategoryControllerTest()
 {
     LoginContext.GetInstance().Reset();
     categoryRequest = new CategoryRequest {
         CategoryId = "1"
     };
 }
Пример #29
0
        public static async Task performAuth(DBUserLoginRequest user, statusResponseList <DBBasicAuthority> callback)
        {
            //throw new Exception("TEST EXCEPTION");

            if (callback == null)
            {
                throw new Exception("Callback must not be null");
            }

            var httpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(ServerURLs.authURL);

            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method      = "POST";
            httpWebRequest.ServicePoint.ConnectionLimit = 3;
            httpWebRequest.Timeout   = 30000;
            httpWebRequest.KeepAlive = false;

            var loginContext = new LoginContext(user);

            var jsonUser = JsonConvert.SerializeObject(loginContext);

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                streamWriter.Write(jsonUser);
            }

            var response = await httpWebRequest.GetResponseAsync();

            string responseData = new StreamReader(response.GetResponseStream()).ReadToEnd();

            httpWebRequest.Abort();

            var exchangeInfo = JsonConvert.DeserializeObject <ExchengeInfo>(responseData);

            if (!exchangeInfo.success)
            {
                callback(false, "Login failed", "Incorrect username/password detected, please try again", null);
                return;
            }

            if (exchangeInfo.profiles == null || exchangeInfo.profiles.Length == 0)
            {
                callback(false, "Warning:", "You currently have no app setups available, go to your dashboard and create one!", null);
                return;
            }

            var localDataStore = DBLocalDataStore.GetInstance();

            localDataStore.AddUserInfo(user);
            localDataStore.ClearBasicAuthority();

            var profilesList = new List <DBBasicAuthority>();

            foreach (DBBasicAuthority profile in exchangeInfo.profiles)
            {
                profilesList.Add(profile);
                localDataStore.AddBasicAuthority(profile);
            }
            callback(true, null, "OK", profilesList);
        }
Пример #30
0
        public MainWindow()
        {
            InitializeComponent();
            notAnsweredListBox.Items.SortDescriptions.Add(
                new System.ComponentModel.SortDescription("CreateTime",
                                                          System.ComponentModel.ListSortDirection.Ascending));
            var mainContext = new CRMContext();

            DataContext = mainContext;
            ((CRMContext)DataContext).mainWindow = this;
            var login      = new LoginView();
            var loginModel = new LoginContext(mainContext.serverIp);

            login.DataContext = loginModel;
            loginModel.View   = login;
            var t = login.ShowDialog();

            if (t != true)
            {
                Environment.Exit(0);
            }
            mainContext.SipUser   = AppSettings.SipInfo?.SipUser;
            mainContext.SipSecret = AppSettings.SipInfo?.SipSecret;
            mainContext.InitMysqlAndSip();
        }
Пример #31
0
		private void BindSecure(System.String username, System.String password, AuthenticationTypes authenticationTypes)
		{
			if ((authenticationTypes & AuthenticationTypes.Secure) != 0) {			
				LoginContext loginContext = null;
				try {					
					if (username != null && password != null) {
						AuthenticationCallbackHandler callbackHandler = new AuthenticationCallbackHandler (username,password);
						loginContext = new LoginContext (SecurityAppName, callbackHandler);
					}
					else
						loginContext = new LoginContext (SecurityAppName);

					loginContext.login ();
				}
				catch (Exception e) {
					throw new LdapException ("Failed to create login security context", 80, "", e);
				}

				Krb5Helper krb5Helper = null;
				try {
					krb5Helper = new Krb5Helper ("ldap@" + conn.Host, username, loginContext.getSubject (), authenticationTypes, SecurityMech);
				}
				finally {
					loginContext.logout();
				}
				sbyte [] token = krb5Helper.ExchangeTokens (Krb5Helper.EmptyToken);

				for (;;) {
					LdapResponseQueue queue = Bind(LdapConnection.Ldap_V3, username, token, null, null, AuthenticationMech);
					LdapResponse res = (LdapResponse) queue.getResponse ();
					if (res.ResultCode != LdapException.SASL_BIND_IN_PROGRESS &&
						res.ResultCode != LdapException.SUCCESS) {
						krb5Helper.Dispose();
						throw new LdapException(ExceptionMessages.CONNECTION_ERROR, res.ResultCode, res.ErrorMessage);
					}
					Asn1OctetString serverSaslCreds = ((RfcBindResponse)res.Asn1Object.Response).ServerSaslCreds;
					token = serverSaslCreds != null ? serverSaslCreds.byteValue () : null;

					token = krb5Helper.ExchangeTokens(token == null ? Krb5Helper.EmptyToken : token);

					if (res.ResultCode != LdapException.SASL_BIND_IN_PROGRESS)
						break;

					conn.ReplaceStreams (conn.InputStream,conn.OutputStream);
				}

				System.IO.Stream inStream = conn.InputStream;
				System.IO.Stream newIn = new SecureStream (inStream, krb5Helper);
				System.IO.Stream outStream = conn.OutputStream;
				System.IO.Stream newOut = new SecureStream (outStream, krb5Helper);
				conn.ReplaceStreams (newIn,newOut);
			}		
		}
Пример #32
0
        private void UpdateLoginStatus(LoginStatus status, string message)
        {
            InternalStatusCode = status;
            InternalLoginMessage = message;

            Client.DebugLog("Login status: " + status.ToString() + ": " + message);

            if (OnLogin != null)
            {
                try { OnLogin(status, message); }
                catch (Exception e) { Client.Log(e.ToString(), Helpers.LogLevel.Error); }
            }

            if (status == LoginStatus.Success || status == LoginStatus.Failed)
            {
                CurrentContext = null;
                LoginEvent.Set();
            }
        }
Пример #33
0
        public void BeginLogin(LoginParams loginParams)
        {
            if (CurrentContext != null)
                throw new Exception("Login already in progress");

            LoginEvent.Reset();

            CurrentContext = new LoginContext();
            CurrentContext.Params = loginParams;

            BeginLogin();
        }
Пример #34
0
        /// <summary>
        /// Login that takes a struct of all the values that will be passed to
        /// the login server
        /// </summary>
        /// <param name="loginParams">The values that will be passed to the login
        /// server, all fields must be set even if they are String.Empty</param>
        /// <returns>Whether the login was successful or not. On failure the
        /// LoginErrorKey string will contain the error code and LoginMessage
        /// will contain a description of the error</returns>
        public bool Login(LoginParams loginParams)
        {
            BeginLogin(loginParams);

            LoginEvent.WaitOne(loginParams.Timeout, false);

            if (CurrentContext != null)
            {
                CurrentContext = null; // Will force any pending callbacks to bail out early
                InternalStatusCode = LoginStatus.Failed;
                InternalLoginMessage = "Timed out";
                return false;
            }

            return (InternalStatusCode == LoginStatus.Success);
        }
Пример #35
0
        private void LoginResponseCallback(IAsyncResult result)
        {
            LoginContext myContext = result.AsyncState as LoginContext;
            if (myContext == null)
                return;

            lock (LockObject)
            {
                HttpWebResponse response = null;
                Stream xmlStream = null;
                XmlTextReader reader = null;

                try
                {
                    if (myContext != CurrentContext)
                    {
                        if (myContext.Request != null)
                        {
                            myContext.Request.Abort();
                            myContext.Request = null;
                        }
                        return;
                    }

                    response = (HttpWebResponse)myContext.Request.EndGetResponse(result);

                    xmlStream = response.GetResponseStream();

                    MemoryStream memStream = new MemoryStream();
                    BinaryReader streamReader = new BinaryReader(xmlStream);
                    BinaryWriter streamWriter = new BinaryWriter(memStream);

                    // Put the entire response in to a byte array
                    byte[] buffer;
                    while ((buffer = streamReader.ReadBytes(1024)) != null)
                    {
                        if (buffer.Length == 0)
                            break;
                        streamWriter.Write(buffer);
                    }
                    streamWriter.Flush();
                    xmlStream.Close();

                    // Write the entire memory stream out to a byte array
                    buffer = memStream.ToArray();

                    // Reset the position in the stream to the beginning
                    memStream.Seek(0, SeekOrigin.Begin);

                    // The memory stream will become an XML stream shortly
                    xmlStream = memStream;

                    InternalRawLoginReply = Encoding.UTF8.GetString(buffer);

                    //reader = XmlReader.Create(xmlStream);
                    reader = new XmlTextReader(xmlStream);

                    // Parse the incoming xml
                    bool redirect = false;
                    string nextURL = String.Empty;
                    string nextMethod = String.Empty;
                    string name, value;
                    IPAddress simIP = IPAddress.Loopback;
                    ushort simPort = 0;
                    bool loginSuccess = false;
                    string reason = String.Empty;
                    string message = String.Empty;

                    reader.ReadStartElement("methodResponse");

                    if (!reader.IsStartElement("fault"))
                    {
                        #region XML Parsing

                        reader.ReadStartElement("params");
                        reader.ReadStartElement("param");
                        reader.ReadStartElement("value");
                        reader.ReadStartElement("struct");

                        while (reader.IsStartElement("member"))
                        {
                            reader.ReadStartElement("member");
                            name = reader.ReadElementString("name");

                            switch (name)
                            {
                                case "login":
                                    value = ReadStringValue(reader);

                                    if (value == "indeterminate")
                                        redirect = true;
                                    else if (value == "true")
                                        loginSuccess = true;

                                    break;
                                case "reason":
                                    reason = ReadStringValue(reader);
                                    InternalErrorKey = reason;
                                    break;
                                case "agent_id":
                                    LLUUID.TryParse(ReadStringValue(reader), out Client.Network.AgentID);
                                    Client.Self.ID = Client.Network.AgentID;
                                    break;
                                case "session_id":
                                    LLUUID.TryParse(ReadStringValue(reader), out Client.Network.SessionID);
                                    break;
                                case "secure_session_id":
                                    LLUUID.TryParse(ReadStringValue(reader), out Client.Network.SecureSessionID);
                                    break;
                                case "circuit_code":
                                    Client.Network.CircuitCode = (uint)ReadIntegerValue(reader);
                                    break;
                                case "first_name":
                                    Client.Self.FirstName = ReadStringValue(reader).Trim(new char[] { '"' });
                                    break;
                                case "last_name":
                                    Client.Self.LastName = ReadStringValue(reader).Trim(new char[] { '"' });
                                    break;
                                case "start_location":
                                    Client.Self.StartLocation = ReadStringValue(reader);
                                    break;
                                case "look_at":
                                    ArrayList look_at = (ArrayList)LLSD.ParseTerseLLSD(ReadStringValue(reader));
                                    Client.Self.LookAt = new LLVector3(
                                        (float)(double)look_at[0],
                                        (float)(double)look_at[1],
                                        (float)(double)look_at[2]);
                                    break;
                                case "home":
                                    Hashtable home = (Hashtable)LLSD.ParseTerseLLSD(ReadStringValue(reader));

                                    ArrayList array = (ArrayList)home["position"];
                                    Client.Self.HomePosition = new LLVector3(
                                        (float)(double)array[0],
                                        (float)(double)array[1],
                                        (float)(double)array[2]);

                                    array = (ArrayList)home["look_at"];
                                    Client.Self.HomeLookAt = new LLVector3(
                                        (float)(double)array[0],
                                        (float)(double)array[1],
                                        (float)(double)array[2]);
                                    break;
                                case "agent_access":
                                    Client.Self.AgentAccess = ReadStringValue(reader);
                                    break;
                                case "message":
                                    message = ReadStringValue(reader);
                                    break;
                                case "region_x":
                                    //FIXME:
                                    int regionX = ReadIntegerValue(reader);
                                    break;
                                case "region_y":
                                    // FIXME:
                                    int regionY = ReadIntegerValue(reader);
                                    break;
                                case "sim_port":
                                    simPort = (ushort)ReadIntegerValue(reader);
                                    break;
                                case "sim_ip":
                                    IPAddress.TryParse(ReadStringValue(reader), out simIP);
                                    break;
                                case "seconds_since_epoch":
                                    uint timestamp = (uint)ReadIntegerValue(reader);
                                    DateTime time = Helpers.UnixTimeToDateTime(timestamp);
                                    // FIXME: ???
                                    break;
                                case "seed_capability":
                                    LoginSeedCapability = ReadStringValue(reader);
                                    break;
                                case "inventory-root":
                                    reader.ReadStartElement("value");
                                    reader.ReadStartElement("array");
                                    reader.ReadStartElement("data");
                                    reader.ReadStartElement("value");
                                    reader.ReadStartElement("struct");

                                    ReadStringMember(reader, out name, out value);
                                    LLUUID.TryParse(value, out Client.Self.InventoryRootFolderUUID);

                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    break;
                                case "inventory-lib-root":
                                    reader.ReadStartElement("value");

                                    // Fix this later
                                    reader.Skip();

                                    //reader.ReadStartElement("array");
                                    //reader.ReadStartElement("data");
                                    //reader.ReadStartElement("value");
                                    //reader.ReadStartElement("struct");

                                    //ReadStringMember(reader, out name, out value);
                                    // FIXME:
                                    //LLUUID.TryParse(value, out Client.Self.InventoryLibRootFolderUUID);

                                    //reader.ReadEndElement();
                                    //reader.ReadEndElement();
                                    //reader.ReadEndElement();
                                    //reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    break;
                                case "inventory-lib-owner":
                                    reader.ReadStartElement("value");
                                    reader.ReadStartElement("array");
                                    reader.ReadStartElement("data");
                                    reader.ReadStartElement("value");
                                    reader.ReadStartElement("struct");

                                    ReadStringMember(reader, out name, out value);
                                    // FIXME:
                                    //LLUUID.TryParse(value, out Client.Self.InventoryLibOwnerUUID);

                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    break;
                                case "inventory-skeleton":
                                    {
                                        reader.ReadStartElement("value");
                                        reader.ReadStartElement("array");
                                        reader.ReadStartElement("data");

                                        int typeDefault, version;
                                        string invName;
                                        LLUUID folderID, parentID;

                                        while (ReadInventoryMember(reader, out typeDefault, out version, out invName,
                                            out folderID, out parentID))
                                        {
                                            // FIXME:
                                        }

                                        reader.ReadEndElement();
                                        reader.ReadEndElement();
                                        reader.ReadEndElement();
                                        break;
                                    }
                                case "inventory-skel-lib":
                                    {
                                        reader.ReadStartElement("value");
                                        reader.ReadStartElement("array");
                                        reader.ReadStartElement("data");

                                        int typeDefault, version;
                                        string invName;
                                        LLUUID folderID, parentID;

                                        while (ReadInventoryMember(reader, out typeDefault, out version, out invName,
                                            out folderID, out parentID))
                                        {
                                            // FIXME:
                                        }

                                        reader.ReadEndElement();
                                        reader.ReadEndElement();
                                        reader.ReadEndElement();
                                        break;
                                    }
                                case "gestures":
                                    reader.ReadStartElement("value");
                                    reader.ReadStartElement("array");
                                    reader.ReadStartElement("data");

                                    while (reader.IsStartElement("value"))
                                    {
                                        reader.ReadStartElement("value");
                                        reader.ReadStartElement("struct");

                                        while (ReadStringMember(reader, out name, out value))
                                        {
                                            switch (name)
                                            {
                                                case "asset_id":
                                                    // FIXME:
                                                    break;
                                                case "item_id":
                                                    // FIXME:
                                                    break;
                                                default:
                                                    Client.Log("Unhandled element in login reply (gestures)",
                                                        Helpers.LogLevel.Error);
                                                    reader.Skip();
                                                    break;
                                            }

                                            // FIXME:
                                        }

                                        reader.ReadEndElement();
                                        reader.ReadEndElement();
                                    }

                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    break;
                                case "event_categories":
                                    {
                                        reader.ReadStartElement("value");
                                        reader.ReadStartElement("array");
                                        reader.ReadStartElement("data");

                                        int categoryID;
                                        string categoryName;

                                        while (ReadCategoryMember(Client, reader, out categoryID, out categoryName))
                                        {
                                            // FIXME:
                                        }

                                        reader.ReadEndElement();
                                        reader.ReadEndElement();
                                        reader.ReadEndElement();
                                        break;
                                    }
                                case "classified_categories":
                                    {
                                        reader.ReadStartElement("value");
                                        reader.ReadStartElement("array");
                                        reader.ReadStartElement("data");

                                        int categoryID;
                                        string categoryName;

                                        while (ReadCategoryMember(Client, reader, out categoryID, out categoryName))
                                        {
                                            // FIXME:
                                        }

                                        reader.ReadEndElement();
                                        reader.ReadEndElement();
                                        reader.ReadEndElement();
                                        break;
                                    }
                                case "event_notifications":
                                    reader.ReadStartElement("value");
                                    reader.ReadStartElement("array");
                                    reader.ReadStartElement("data");

                                    // FIXME:
                                    
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    break;
                                case "buddy-list":
                                    reader.ReadStartElement("value");
                                    reader.ReadStartElement("array");
                                    reader.ReadStartElement("data");

                                    int buddyRightsGiven, buddyRightsHas;
                                    LLUUID buddyID;

                                    while (ReadBuddyMember(Client, reader, out buddyRightsGiven, out buddyRightsHas,
                                        out buddyID))
                                    {
                                        // FIXME:
                                    }

                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    break;
                                case "ui-config":
                                    reader.ReadStartElement("value");
                                    reader.ReadStartElement("array");
                                    reader.ReadStartElement("data");
                                    reader.ReadStartElement("value");
                                    reader.ReadStartElement("struct");

                                    while (ReadStringMember(reader, out name, out value))
                                    {
                                        switch (name)
                                        {
                                            case "allow_first_life":
                                                // FIXME:
                                                break;
                                            default:
                                                Client.Log("Unhandled element in login reply (ui-config)",
                                                    Helpers.LogLevel.Error);
                                                reader.Skip();
                                                break;
                                        }
                                    }

                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    break;
                                case "login-flags":
                                    reader.ReadStartElement("value");
                                    reader.ReadStartElement("array");
                                    reader.ReadStartElement("data");
                                    reader.ReadStartElement("value");
                                    reader.ReadStartElement("struct");

                                    while (ReadStringMember(reader, out name, out value))
                                    {
                                        switch (name)
                                        {
                                            case "ever_logged_in":
                                                // FIXME:
                                                break;
                                            case "daylight_savings":
                                                // FIXME:
                                                break;
                                            case "stipend_since_login":
                                                // FIXME:
                                                break;
                                            case "gendered":
                                                // FIXME:
                                                break;
                                            default:
                                                Client.Log("Unhandled element in login reply (login-flags)",
                                                    Helpers.LogLevel.Error);
                                                reader.Skip();
                                                break;
                                        }
                                    }

                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    break;
                                case "global-textures":
                                    reader.ReadStartElement("value");
                                    reader.ReadStartElement("array");
                                    reader.ReadStartElement("data");
                                    reader.ReadStartElement("value");
                                    reader.ReadStartElement("struct");

                                    while (ReadStringMember(reader, out name, out value))
                                    {
                                        switch (name)
                                        {
                                            case "cloud_texture_id":
                                                // FIXME:
                                                break;
                                            case "sun_texture_id":
                                                // FIXME:
                                                break;
                                            case "moon_texture_id":
                                                // FIXME:
                                                break;
                                            default:
                                                Client.Log("Unhandled element in login reply (global-textures)",
                                                    Helpers.LogLevel.Error);
                                                reader.Skip();
                                                break;
                                        }
                                    }

                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    reader.ReadEndElement();
                                    break;
                                case "next_options":
                                    // FIXME: Parse the next_options and only use those for the next_url
                                    reader.Skip();
                                    break;
                                case "next_duration":
                                    // FIXME: Use this value as the timeout for the next request
                                    reader.Skip();
                                    break;
                                case "next_url":
                                    nextURL = ReadStringValue(reader);
                                    break;
                                case "next_method":
                                    nextMethod = ReadStringValue(reader);
                                    break;
                                default:
                                    Client.Log("Unhandled element in login reply", Helpers.LogLevel.Error);
                                    reader.Skip();
                                    break;
                            }

                            reader.ReadEndElement();
                        }

                        reader.ReadEndElement();
                        reader.ReadEndElement();
                        reader.ReadEndElement();
                        reader.ReadEndElement();

                        #endregion XML Parsing

                        if (redirect)
                        {
                            UpdateLoginStatus(LoginStatus.Redirecting, "Redirecting login...");

                            // Handle indeterminate logins
                            CurrentContext = new LoginContext();
                            CurrentContext.Params = myContext.Params;
                            CurrentContext.Params.URI = nextURL;
                            CurrentContext.Params.MethodName = nextMethod;
                            BeginLogin();
                        }
                        else if (loginSuccess)
                        {
                            UpdateLoginStatus(LoginStatus.ConnectingToSim, "Connecting to simulator...");

                            // Connect to the sim given in the login reply
                            if (Connect(simIP, simPort, true, LoginSeedCapability) != null)
                            {
                                // Request the economy data right after login
                                SendPacket(new EconomyDataRequestPacket());

                                // Update the login message with the MOTD returned from the server
                                UpdateLoginStatus(LoginStatus.Success, message);

                                // Fire an event for connecting to the grid
                                if (OnConnected != null)
                                {
                                    try { OnConnected(this.Client); }
                                    catch (Exception e) { Client.Log(e.ToString(), Helpers.LogLevel.Error); }
                                }
                            }
                            else
                            {
                                UpdateLoginStatus(LoginStatus.Failed, "Unable to connect to simulator");
                            }
                        }
                        else
                        {
                            // Make sure a usable error key is set
                            if (!String.IsNullOrEmpty(reason))
                                InternalErrorKey = reason;
                            else
                                InternalErrorKey = "unknown";

                            UpdateLoginStatus(LoginStatus.Failed, message);
                        }
                    }
                    else
                    {
                        reader.ReadStartElement("fault");
                        reader.ReadStartElement("value");
                        reader.ReadStartElement("struct");

                        ReadStringMember(reader, out name, out value);

                        UpdateLoginStatus(LoginStatus.Failed, value);
                    }

                }
                catch (WebException e)
                {
                    UpdateLoginStatus(LoginStatus.Failed, "Error reading response: " + e.Message);
                }
                catch (XmlException e)
                {
                    UpdateLoginStatus(LoginStatus.Failed, "Error parsing reply XML: " + e.Message + Environment.NewLine + e.StackTrace);
                }
                finally
                {
                    if (reader != null)
                        reader.Close();
                    if (xmlStream != null)
                        xmlStream.Close();
                    if (response != null)
                        response.Close();
                }
            }
        }
        private async Task SendStartRequest(LoginContext loginContext)
        {
            var res = await Send(new HttpRequestMessage(HttpMethod.Get, BaseUrl + "?ns=1"));

            var content = await res.Content.ReadAsStringAsync();

            var doc = new HtmlDocument();
            doc.LoadHtml(content);

            loginContext.StartAuthId = doc.DocumentNode.SelectSingleNode("//input[@name='authid']").GetAttributeValue("value", "");
        }
        private async Task SendFirstActionRequest(LoginContext loginContext)
        {
            var req = new HttpRequestMessage(HttpMethod.Post, FirstLoginActionUrl)
            {
                Content = new FormUrlEncodedContent(new[]
				{
					new KeyValuePair<string, string>("execution", "e1s1"),
					new KeyValuePair<string, string>("dapPortalWindowId", "dap1"),
					new KeyValuePair<string, string>("locale", "sv_SE"),
					new KeyValuePair<string, string>("IntId", "dap1"),
					new KeyValuePair<string, string>("authid", ""),
					new KeyValuePair<string, string>("form1:fortsett_knapp", "klicka"),
					new KeyValuePair<string, string>("form1_SUBMIT", "1"),
					new KeyValuePair<string, string>("javax.faces.ViewState", loginContext.ViewStateForSecondRequest)
				})
            };

            await Send(req);
        }
Пример #38
0
        /// <summary>
        /// Login that takes a struct of all the values that will be passed to
        /// the login server
        /// </summary>
        /// <param name="loginParams">The values that will be passed to the login
        /// server, all fields must be set even if they are String.Empty</param>
        /// <returns>Whether the login was successful or not. On failure the
        /// LoginErrorKey string will contain the error code and LoginMessage
        /// will contain a description of the error</returns>
        public bool Login(LoginParams loginParams)
        {
            BeginLogin(loginParams);

            LoginEvent.WaitOne(loginParams.Timeout, false);
            lock (LockObject)
            {
                if (CurrentContext != null)
                {
                    if (CurrentContext.Request != null)
                        CurrentContext.Request.Abort();
                    CurrentContext = null; // Will force any pending callbacks to bail out early
                    InternalStatusCode = LoginStatus.Failed;
                    InternalLoginMessage = "Timed out";
                    return false;
                }

                if (InternalStatusCode != LoginStatus.Success)
                    return false;
            }
            return true;
        }
        private async Task<HttpResponseMessage> Login()
        {
            var context = new LoginContext();

            await SendStartRequest(context);
            await SendIdpRequest(context);
            await SendFirstActionRequest(context);
            await SendSecondActionRequest();
            await SendThirdActionRequest();
            await SendFourthRequest();
            await SendFifthRequest(context);

            var req = new HttpRequestMessage(HttpMethod.Post, LandingPageUrl)
            {
                Content = new FormUrlEncodedContent(new[]
				{
					new KeyValuePair<string, string>("dapPortalWindowId", "dap1"),
					new KeyValuePair<string, string>("locale", "sv_SE"),
					new KeyValuePair<string, string>("IntId1", "dap1"),
					new KeyValuePair<string, string>("authid", context.LoginAuthId)
				})
            };

            return await Send(req);
        }
        private async Task SendIdpRequest(LoginContext loginContext)
        {
            var req = new HttpRequestMessage(HttpMethod.Post, IdpUrl)
            {
                Content = new FormUrlEncodedContent(new[]
				{
					new KeyValuePair<string, string>("authid", loginContext.StartAuthId)
				})
            };

            var res = await Send(req);

            var content = await res.Content.ReadAsStringAsync();

            var doc = new HtmlDocument();
            doc.LoadHtml(content);

            loginContext.ViewStateForSecondRequest =
                doc.DocumentNode.SelectSingleNode("//input[@name='javax.faces.ViewState']").GetAttributeValue("value", "");
        }
		private async Task SendFourthRequest(LoginContext loginContext)
		{
			var req = new HttpRequestMessage(HttpMethod.Get, FourthLoginRequestUrl);

			req.Headers.Referrer = new Uri(ThirdLoginActionUrl);

			var res = await Send(req);

			var content = await res.Content.ReadAsStringAsync();

			var doc = new HtmlDocument();
			doc.LoadHtml(content);

			var authId = doc.DocumentNode.SelectSingleNode("//input[@name='authid']");

			if (authId != null)
			{
				loginContext.LoginAuthId = doc.DocumentNode.SelectSingleNode("//input[@name='authid']")
					.GetAttributeValue("value", "");
			}
		}
        private async Task SendFifthRequest(LoginContext context)
        {
            var res = await Send(new HttpRequestMessage(HttpMethod.Get, FifthLoginRequestUrl));

            string content = await res.Content.ReadAsStringAsync();

            var doc = new HtmlDocument();
            doc.LoadHtml(content);

            var authId = doc.DocumentNode.SelectSingleNode("//input[@name='authid']");

            if (authId != null)
            {
                context.LoginAuthId =
                    doc.DocumentNode.SelectSingleNode("//input[@name='authid']").GetAttributeValue("value", "");
            }
        }