public void Logout(string tokenId) { var session = SessionCache.Instance.Find(tokenId); if (session == null) { throw new Exception(String.Format("Unexpected error: session {0} does not exist in the cache", tokenId)); } var request = new TerminateSessionRequest(session.Credentials.UserName, session.Credentials.SessionToken); Platform.GetService( delegate(IAuthenticationService service) { service.TerminateSession(request); SessionCache.Instance.RemoveSession(tokenId); LoginServiceAuditLog.AuditLogout(session.User.UserName, session.User.DisplayName, session.User.Credentials.SessionToken.Id); }); }
public SessionInfo Login(string userName, string password, string appName) { if (string.IsNullOrEmpty(userName)) { throw new ArgumentException(SR.UserIDIsEmpty); } if (string.IsNullOrEmpty(password)) { throw new ArgumentException(SR.PasswordIsEmpty); } Platform.CheckForEmptyString(password, "password"); Platform.CheckForEmptyString(appName, "appName"); SessionInfo session = null; Platform.GetService( delegate(IAuthenticationService service) { try { var request = new InitiateSessionRequest(userName, appName, Dns.GetHostName(), password) { GetAuthorizations = true }; InitiateSessionResponse response = service.InitiateSession(request); if (response != null) { var credentials = new LoginCredentials { UserName = userName, DisplayName = response.DisplayName, SessionToken = response.SessionToken, Authorities = response.AuthorityTokens, DataAccessAuthorityGroups = response.DataGroupOids, EmailAddress = response.EmailAddress }; var user = new CustomPrincipal(new CustomIdentity(userName, response.DisplayName), credentials); Thread.CurrentPrincipal = user; session = new SessionInfo(user); session.User.WarningMessages = response.WarningMessages; SessionCache.Instance.AddSession(response.SessionToken.Id, session); LoginServiceAuditLog.AuditSuccess(userName, response.DisplayName, response.SessionToken.Id); Platform.Log(LogLevel.Info, "{0} has successfully logged in.", userName); } } catch (FaultException <PasswordExpiredException> ex) { throw ex.Detail; } catch (FaultException <UserAccessDeniedException> ex) { LoginServiceAuditLog.AuditFailure(userName); throw ex.Detail; } catch (FaultException <RequestValidationException> ex) { throw ex.Detail; } } ); return(session); }