public CompleteLoginResp CompleteLogin(CompleteLoginReq req) { return(HandleServiceCall(req, new CompleteLoginResp(), CompleteLoginImpl, new SessionAuthOptions { IsLoginFlow = true })); }
private void CompleteLoginImpl(CompleteLoginReq req, CompleteLoginResp resp) { ClientSession session = Server.SessionManager.CreateSession(req.Auth.GetClientCode(), req.ChallengeResponse); resp.SessionId = session.SessionId; }
public async Task <TeamRole> LoginAsync() { SequenceNumber = 0; _sessionId = 0; lock (_lock) { using ( var adminService = new AdminServiceClient(new BasicHttpBinding(), new EndpointAddress(ConnectionData.Url))) { int sequenceNumber = SequenceNumber; var initLoginReq = new InitLoginReq { Auth = new ReqAuth { ClientName = ConnectionData.Username, TeamName = ConnectionData.TeamName, AuthCode = GetAuthCode(string.Format("{0}:{1}:{2}:{3}{4}", ConnectionData.TeamName, ConnectionData.Username, 0, 0, ConnectionData.Password)), SessionId = 0, SequenceNumber = 0, } }; _stopwatch.Start(); var initLoginResp = adminService.InitLoginAsync(initLoginReq).Result; _stopwatch.Stop(); LastCallTime = _stopwatch.ElapsedMilliseconds; _stopwatch.Reset(); if (initLoginResp.Status != "OK") { throw new Exception(initLoginResp.Message); } var completeReq = new CompleteLoginReq { Auth = new ReqAuth { ClientName = ConnectionData.Username, TeamName = ConnectionData.TeamName, AuthCode = GetAuthCode( string.Format("{0}:{1}:{2}:{3}{4}", ConnectionData.TeamName, ConnectionData.Username, 0, 0, ConnectionData.Password)), SessionId = 0, SequenceNumber = 0, }, ChallengeResponse = GetAuthCode(string.Format("{0}{1}", GetAuthCode(string.Format("{0}{1}", initLoginResp.Challenge, ConnectionData.Password)), ConnectionData.Password)), }; sequenceNumber = SequenceNumber; _stopwatch.Start(); var completeLoginResp = adminService.CompleteLoginAsync(completeReq).Result; _stopwatch.Stop(); LastCallTime = _stopwatch.ElapsedMilliseconds; _stopwatch.Reset(); if (completeLoginResp.Status != "OK") { throw new Exception(completeLoginResp.Message); } _sessionId = completeLoginResp.SessionId; var req = new CreateObserverReq { Auth = new ReqAuth { ClientName = ConnectionData.Username, TeamName = ConnectionData.TeamName, SessionId = _sessionId, SequenceNumber = sequenceNumber, AuthCode = GetAuthCode(string.Format("{0}:{1}:{2}:{3}{4}", ConnectionData.TeamName, ConnectionData.Username, _sessionId, sequenceNumber, ConnectionData.Password)), }, }; _stopwatch.Start(); var resp = adminService.CreateObserverAsync(req).Result; _stopwatch.Stop(); LastCallTime = _stopwatch.ElapsedMilliseconds; _stopwatch.Reset(); if (resp.Status != "OK") { throw new Exception(resp.Message); } _observerId = resp.ObserverId; return(resp.Role); } } }