public void PublishAuthenticatedUserInfoToDBServer(ISessionId sessionId)
 {
     if (!loggedInSessionsOnCS.Contains(sessionId))
     {
         loggedInSessionsOnCS.Add(sessionId);
     }
 }
Beispiel #2
0
 public ManagementSession(ManagementServer server, UserCredentials credentials)
 {
     this.dbMgtServer            = server;
     this._sessionStartTime      = DateTime.Now;
     _sessionId                  = new RouterSessionId();
     _sessionId.SessionId        = Guid.NewGuid().ToString();
     _rpcService                 = new RPCService <ManagementSession>(new TargetObject <ManagementSession>(this));
     ManagementProvider.Provider = this;
 }
Beispiel #3
0
 public void PublishAuthenticatedUserInfoToDBServer(ISessionId sessionId, string username)
 {
     try
     {
         if (ConfigurationServer != null)
         {
             ConfigurationServer.PublishAuthenticatedUserInfoToDBServer(sessionId, username);
         }
     }
     catch (Exception exc)
     {
         if (LoggerManager.Instance.SecurityLogger != null && LoggerManager.Instance.SecurityLogger.IsErrorEnabled)
         {
             LoggerManager.Instance.SecurityLogger.Error("SecurityManager.PublishLoginInfo", exc);
         }
     }
 }
Beispiel #4
0
        public bool Authorize(IDBOperation operation, bool isInitializeCall)
        {
            if (_nodeContext.StatusLatch.IsAnyBitsSet(NodeStatus.Initializing))
            {
                _nodeContext.StatusLatch.WaitForAny(NodeStatus.Running);
            }

            bool isInitialized = true;

            if (!isInitializeCall)
            //This portion is to verify if database is initialized or not, it has nothing to do with security (authorization or authentication)
            {
                ClientSessionId clientSessionId = operation.SessionId as ClientSessionId;
                if (!(initializedDatabases != null && initializedDatabases.ContainsKey(operation.Database) && (initializedDatabases[operation.Database].Contains(operation.SessionId) || (clientSessionId != null && initializedDatabases[operation.Database].Contains(clientSessionId.RouterSessionId)))))
                {
                    isInitialized = false;
                }
                //throw new DistributorException(ErrorCodes.Distributor.DATABASE_NOT_INITIALIZED, new[] {operation.Database});
            }
            //Authorization
            bool       isAuthorized = false;
            ISessionId sessionId    = operation.SessionId;
            Permission permission   = null;

            switch (operation.OperationType)
            {
            case DatabaseOperationType.Get:
            case DatabaseOperationType.GetChunk:
            case DatabaseOperationType.ReadQuery:
            case DatabaseOperationType.DisposeReader:
                permission = Permission.Read;
                break;

            case DatabaseOperationType.Insert:
            case DatabaseOperationType.Delete:
            case DatabaseOperationType.Replace:
            case DatabaseOperationType.Update:
            case DatabaseOperationType.WriteQuery:

                permission = Permission.Write;
                break;

            case DatabaseOperationType.Init:
                permission = Permission.Init;
                break;
            }

            //if(LoggerManager.Instance.SecurityLogger != null && LoggerManager.Instance.SecurityLogger.IsInfoEnabled)
            //{
            //    LoggerManager.Instance.SecurityLogger.Info("DataBaseEngine.Authorize", "Operation: " + operation.OperationType);
            //}

            if (permission != null)
            {
                ResourceId resourceId;
                ResourceId superResourceId;
                Security.Impl.SecurityManager.GetSecurityInformation(permission, operation.Database, out resourceId, out superResourceId, null);
                isAuthorized = SecurityManager.Authorize(_nodeContext.LocalShardName, sessionId, resourceId, superResourceId, permission);
                _nodeContext.TopologyImpl.IsOpertionAllow(operation.Database);
            }

            if (isAuthorized && !isInitialized)
            {
                this.InitializeDatabase(new InitDatabaseOperation()
                {
                    Database = operation.Database, SessionId = operation.SessionId
                });
            }

            return(isAuthorized);
        }
Beispiel #5
0
 public void Deserialize(Serialization.IO.CompactReader reader)
 {
     SessionId       = reader.ReadObject() as string;
     Username        = reader.ReadObject() as string;
     RouterSessionId = reader.ReadObject() as ISessionId;
 }
        public void PublishAuthenticatedUserInfoToDBServer(string cluster, string shard, ISessionId sessionId, string username)
        {
            ManagementCommand command = GetManagementCommand(ConfigurationCommandUtil.MethodName.PublishAuthenticatedUserInfoToDBServer);

            command.Parameters.AddParameter(cluster);
            command.Parameters.AddParameter(shard);
            command.Parameters.AddParameter(sessionId);
            command.Parameters.AddParameter(username);
            ExecuteCommandOnMgtServer(command, false);
        }
 /// <summary>
 /// Indicates that a message was received.
 /// </summary>
 public void OnMessage(ISessionId sessionId, string topicPath, IContent content, IReceiveContext context)
 => WriteLine($"Handler for {topicPath} has received message: {content.AsString()}.");
Beispiel #8
0
 /// <summary>
 /// Indicates that a response message was received.
 /// </summary>
 public void OnResponse(ISessionId sessionId, string response)
 => WriteLine($"Received response: '{response}'.");
Beispiel #9
0
 /// <summary>
 /// Indicates that a error response message was received.
 /// </summary>
 public void OnResponseError(ISessionId sessionId, Exception exception)
 => WriteLine($"Response error received from session {sessionId}: '{exception}'.");
Beispiel #10
0
 public IUser GetAuthenticatedUserInfoFromConfigServer(ISessionId sessionId)
 {
     return(_session.GetAuthenticatedUserInfoFromConfigServer(sessionId));
 }
Beispiel #11
0
 public bool IsAuthorized(ISessionId sessionId, ResourceId resourceId, ResourceId superResourceId, Permission operationPermission)
 {
     return(_session.IsAuthorized(sessionId, resourceId, superResourceId, operationPermission));
 }
Beispiel #12
0
 /// <summary>
 /// Indicates that a response message was received.
 /// </summary>
 public void OnResponse(ISessionId sessionId, string response)
 {
     Response  = response;
     SessionId = sessionId;
     ResponseEvent.Set();
 }
Beispiel #13
0
 public void PublishAuthenticatedUserInfoToDBServer(ISessionId sessionId)
 {
     _clientSessionManager.PublishAuthenticatedUserInfoToDBServer(sessionId);
 }
Beispiel #14
0
 public IUser GetAuthenticatedUserInfoFromConfigServer(ISessionId sessionId)
 {
     throw new NotImplementedException();
 }
Beispiel #15
0
 public void OnReply(ISessionId sessionId, Dictionary <string, string> properties)
 {
     vals = properties;
 }
Beispiel #16
0
 public void PublishAuthenticatedUserInfoToDBServer(string cluster, string shard, ISessionId sessionId, string username)
 {
     dbMgtServer.PublishAuthenticatedUserInfoToDBServer(cluster, shard, sessionId, username);
 }
Beispiel #17
0
 public void OnUnknownSession(ISessionId sessionId)
 {
     Console.WriteLine("no");
 }
Beispiel #18
0
 public bool IsAuthorized(ISessionId sessionId, Common.Security.Impl.ResourceId resourceId, Common.Security.Impl.ResourceId superResourceId, Common.Security.Impl.Permission operationPermission)
 {
     return(false);
 }