コード例 #1
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;
        }
コード例 #2
0
        public Mercury.Server.Security.AuthenticationResponse Authenticate(String securityAuthorityName, String accountType, String accountName, String password, String newPassword, String environment)
        {
            Mercury.Server.Security.AuthenticationResponse authenticationResponse = new AuthenticationResponse();

            Mercury.Server.Public.Interfaces.Security.Credentials credentials = new Public.Interfaces.Security.Credentials("", "", "", accountName, password, newPassword);

            Mercury.Server.Security.SecurityAuthority securityAuthority = application.SecurityAuthorityGet(securityAuthorityName);

            Mercury.Server.Security.Providers.ActiveDirectory.Provider activeDirectoryProvider;

            Mercury.Server.Session session = null;


            if (securityAuthority == null)
            {
                authenticationResponse.AuthenticationError = Mercury.Server.Public.Interfaces.Security.Enumerations.AuthenticationError.SecurityAuthorityError;

                authenticationResponse.AuthenticationException = new Exception("Unable to retreive Security Authority information from the database.", application.LastException);

                return(authenticationResponse);
            }

            SetProviderCredentials(accountType, securityAuthority, credentials);

            activeDirectoryProvider = new Providers.ActiveDirectory.Provider(credentials);

            authenticationResponse.IsAuthenticated = activeDirectoryProvider.Authenticate();

            if (authenticationResponse.IsAuthenticated)
            {
                session = CreateSession(securityAuthority, authenticationResponse, credentials, environment);
            }

            SetAuthenticationError(authenticationResponse, credentials);

            return(authenticationResponse);
        }
コード例 #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);
        }