Exemple #1
0
        protected String EnvironmentsAvailable(Mercury.Server.Public.Interfaces.Security.Credentials credentials)
        {
            StringBuilder selectStatement = new StringBuilder();

            String environments    = String.Empty;
            String environmentName = String.Empty;


            selectStatement.Append("SELECT * FROM EnvironmentAccess JOIN Environment ON EnvironmentAccess.EnvironmentId = Environment.EnvironmentId WHERE SecurityAuthorityId = " + credentials.SecurityAuthorityId.ToString());

            selectStatement.Append(" AND SecurityGroupId IN (");

            foreach (String currentGroup in credentials.Groups)
            {
                selectStatement.Append("'" + currentGroup + "', ");
            }

            selectStatement.Append("'') ORDER BY EnvironmentName, IsGranted DESC, IsDenied DESC");

            environments = ";";

            foreach (System.Data.DataRow currentRow in application.EnterpriseDatabase.SelectDataTable(selectStatement.ToString()).Rows)
            {
                environmentName = (String)currentRow ["EnvironmentName"];

                if ((Boolean)currentRow["IsGranted"])
                {
                    environments = environments + environmentName + ";";
                }

                if (((Boolean)currentRow["IsDenied"]) && (environments.Contains(environmentName)))
                {
                    environments = environments.Replace(";" + environmentName + ";", ";");
                }
            } // foreach (System.Data.DataRow currentRow in application.EnterpriseDatabase.SelectDataTable (selectStatement.ToString ()).Rows)

            environments = environments.Substring(1, environments.Length - 1);

            if ((environments != String.Empty) && (environments.Substring(environments.Length - 1) == ";"))
            {
                environments = environments.Substring(0, environments.Length - 1);
            }

            return(environments);
        }
Exemple #2
0
        protected void SetProviderCredentials(String accountType, Mercury.Server.Security.SecurityAuthority securityAuthority, Mercury.Server.Public.Interfaces.Security.Credentials credentials)
        {
            String userContext;

            switch (accountType.ToLower())
            {
            case "provider": userContext = securityAuthority.ProviderContext; break;

            case "member": userContext = securityAuthority.MemberContext; break;

            default: userContext = securityAuthority.AssociateContext; break;
            }


            credentials.SecurityAuthorityId = securityAuthority.Id;

            credentials.SecurityAuthorityName = securityAuthority.Name;


            credentials.Protocol = securityAuthority.Protocol;

            credentials.Domain = securityAuthority.Domain;

            credentials.Context = userContext;


            if (securityAuthority.AgentName != String.Empty)
            {
                credentials.SetAgentCredentials(securityAuthority.AgentName, securityAuthority.AgentPassword);
            }

            if (securityAuthority.ServerName != String.Empty)
            {
                credentials.ServerName = securityAuthority.ServerName;
            }

            return;
        }
Exemple #3
0
        protected Mercury.Server.Session CreateSession(Mercury.Server.Security.SecurityAuthority securityAuthority,

                                                       Mercury.Server.Security.AuthenticationResponse authenticationResponse,

                                                       Mercury.Server.Public.Interfaces.Security.Credentials credentials, String environmentName)
        {
            Mercury.Server.Session session = null;

            Mercury.Server.Environment.Environment environment = null;

            Boolean connectionSuccess = false;

            if (!authenticationResponse.IsAuthenticated)
            {
                return(null);
            }

            if (environmentName != String.Empty)
            {
                environment = application.EnvironmentGet(environmentName);

                Mercury.Server.Data.SqlDatabase environmentDatabase = null;

                if (environment != null)
                {
                    environmentDatabase = new Mercury.Server.Data.SqlDatabase(environment.SqlConfiguration);

                    connectionSuccess = environmentDatabase.Connect();
                }

                if (!connectionSuccess)
                {
                    if (environmentDatabase != null)
                    {
                        application.SetLastException(environmentDatabase.LastException);
                    }

                    authenticationResponse.IsAuthenticated = false;

                    authenticationResponse.Environments = EnvironmentsAvailable(credentials);

                    credentials.AuthenticationError = Mercury.Server.Public.Interfaces.Security.Enumerations.AuthenticationError.MustSelectEnvironment;

                    credentials.AuthenticationException = new Exception("Unable to connect to requested environment.");

                    return(null);
                }
            }

            // empty environment or environment selection not allowed for user
            if ((environmentName == String.Empty) || (!((";" + EnvironmentsAvailable(credentials) + ";").Contains(";" + environmentName + ";"))) || (environment == null))
            {
                authenticationResponse.IsAuthenticated = false;

                authenticationResponse.Environments = EnvironmentsAvailable(credentials);

                credentials.AuthenticationError = Mercury.Server.Public.Interfaces.Security.Enumerations.AuthenticationError.MustSelectEnvironment;
            }

            else
            {
                credentials.Environment = environmentName;

                authenticationResponse.IsAuthenticated = true;

                authenticationResponse.AuthenticationError = Mercury.Server.Public.Interfaces.Security.Enumerations.AuthenticationError.NoError;

                session = application.CreateSession(credentials);

                authenticationResponse.Token = session.Token;

                authenticationResponse.SecurityAuthorityId = session.SecurityAuthorityId;

                authenticationResponse.SecurityAuthorityName = session.SecurityAuthorityName;

                authenticationResponse.SecurityAuthorityType = session.SecurityAuthorityType;

                authenticationResponse.EnvironmentId = environment.Id;

                authenticationResponse.EnvironmentName = environment.Name;

                authenticationResponse.ConfidentialityStatement = environment.ConfidentialityStatement;

                authenticationResponse.UserAccountId = session.UserAccountId;

                authenticationResponse.UserAccountName = session.UserAccountName;

                authenticationResponse.UserDisplayName = session.UserDisplayName;

                authenticationResponse.GroupMembership = session.GroupMembership;

                authenticationResponse.RoleMembership = session.RoleMembership;

                authenticationResponse.EnterprisePermissionSet = session.EnterprisePermissionSet;

                authenticationResponse.EnvironmentPermissionSet = session.EnvironmentPermissionSet;

                authenticationResponse.WorkQueuePermissions = session.WorkQueuePermissions;

                authenticationResponse.WorkTeamMembership = session.WorkTeamMembership;
            }

            return(session);
        }
Exemple #4
0
        protected void SetAuthenticationError(Mercury.Server.Security.AuthenticationResponse authenticationResponse, Mercury.Server.Public.Interfaces.Security.Credentials credentials)
        {
            authenticationResponse.AuthenticationError = credentials.AuthenticationError;

            if (credentials.AuthenticationException != null)
            {
                authenticationResponse.AuthenticationException = credentials.AuthenticationException;
            }

            return;
        }
Exemple #5
0
        public Session(Application application, Mercury.Server.Public.Interfaces.Security.Credentials credentials)
        {
            Security.SecurityAuthority securityAuthority = application.SecurityAuthorityGet(credentials.SecurityAuthorityId);

            securityAuthorityId = securityAuthority.Id;

            securityAuthorityName = securityAuthority.Name;

            securityAuthorityType = securityAuthority.SecurityAuthorityType;


            userAccountId = credentials.UserAccountId;

            userAccountName = credentials.UserAccountName;

            userDisplayName = credentials.UserDisplayName;

            groupMembership = credentials.Groups;

            environmentId = application.EnvironmentGet(credentials.Environment).Id;

            environmentName = credentials.Environment;

            roleMembership = application.EnvironmentRoleMembershipListGet(environmentId, securityAuthorityId, groupMembership);

            enterprisePermissionSet = application.EnterprisePermissionsGet(securityAuthorityId, groupMembership);

            environmentPermissionSet = application.EnvironmentPermissionsGet(environmentName, securityAuthorityId, roleMembership);


            List <Core.Work.DataViews.WorkQueuePermission> viewWorkQueuePermissions = application.WorkQueuePermissionsForUserByEnvironment(securityAuthorityId, userAccountId, environmentName);

            foreach (Core.Work.DataViews.WorkQueuePermission currentPermission in viewWorkQueuePermissions)
            {
                workQueuePermissions.Add(currentPermission.WorkQueueId, currentPermission.Permission);
            }


            workTeamMembership = new Dictionary <long, Core.Work.WorkTeamMembership> ();

            foreach (Core.Work.WorkTeamMembership currentMembership in application.WorkTeamMembershipsForUserByEnvironment(securityAuthorityId, userAccountId, environmentName))
            {
                workTeamMembership.Add(currentMembership.WorkTeamId, currentMembership);
            }


            token = (String)application.EnterpriseDatabase.LookupValue("(SELECT NEWID () AS Token) AS GenerateToken", "CAST (Token AS VARCHAR (60)) AS Token", "");

            SerializeToDatabase(application);


            System.Diagnostics.Trace.WriteLineIf(application.TraceSwitchSecurity.TraceVerbose, "** SESSION (BEGIN) **");

            if (application.TraceSwitchSecurity.TraceVerbose)
            {
                foreach (String currentGroup in groupMembership)
                {
                    System.Diagnostics.Trace.WriteLine("Group Membership: " + currentGroup);
                }

                foreach (String currentRole in roleMembership)
                {
                    System.Diagnostics.Trace.WriteLine("Role Membership: " + currentRole);
                }

                foreach (String currentEnterprisePermission in enterprisePermissionSet)
                {
                    System.Diagnostics.Trace.WriteLine("Enterprise Permission: " + currentEnterprisePermission);
                }

                foreach (String currentEnvironmentPermission in environmentPermissionSet)
                {
                    System.Diagnostics.Trace.WriteLine("Environment Permission: " + currentEnvironmentPermission);
                }

                foreach (Core.Work.DataViews.WorkQueuePermission currentPermission in viewWorkQueuePermissions)
                {
                    System.Diagnostics.Trace.WriteLine("Work Queue Permission: " + currentPermission.Name + " (" + currentPermission.Permission.ToString() + ")");
                }
            }

            System.Diagnostics.Trace.WriteLineIf(application.TraceSwitchSecurity.TraceVerbose, "** SESSION ( END ) **");

            return;
        }