Exemplo n.º 1
0
        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);
            });
        }
Exemplo n.º 2
0
        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);
        }