Ejemplo n.º 1
0
        /// <summary>
        /// Processes a wire message that contains a authentication request message, which is sent from a client to request authentication of a set of credentials.
        /// </summary>
        /// <param name="request">Wire message from client</param>
        private void ProcessAuthenticationRequestMessage(WireMessage request)
        {
            if (_isAuthenticated)
            {
                return;
            }

            Identity = null;

            var sharedSecret =
                MessageEncryption
                    ? SessionId.ToByteArray()
                    : null;

            var authRequestMessage =
                _server.Serializer
                .Deserialize <AuthenticationRequestMessage>(
                    _server.MessageEncryptionManager.GetDecryptedMessageData(
                        message: request,
                        serializer: _server.Serializer,
                        sharedSecret: sharedSecret,
                        sendersPublicKeyBlob: _clientPublicKeyBlob,
                        sendersPublicKeySize: _keyPair?.KeySize ?? 0));

            _isAuthenticated = _server.Authenticate(authRequestMessage.Credentials, out var authenticatedIdentity);

            if (_isAuthenticated)
            {
                Identity = authenticatedIdentity;
            }

            var authResponseMessage =
                new AuthenticationResponseMessage
            {
                IsAuthenticated       = _isAuthenticated,
                AuthenticatedIdentity = authenticatedIdentity
            };

            var serializedAuthResponse = _server.Serializer.Serialize(authResponseMessage);

            var wireMessage =
                _server.MessageEncryptionManager.CreateWireMessage(
                    serializedMessage: serializedAuthResponse,
                    serializer: _server.Serializer,
                    sharedSecret: sharedSecret,
                    keyPair: _keyPair,
                    messageType: "auth_response");

            _rawMessageTransport.SendMessage(
                _server.Serializer.Serialize(wireMessage));
        }
Ejemplo n.º 2
0
 // Обработка сообщений аутентификации
 private void OnAuthenticateMessage(AuthenticationResponseMessage message)
 {
     if (message.Status == Status.Ok)
     {
         // Закрываем текущую книгу
         //if (IsBookOpend) book.Close();
         // Сохраняем токен в конфиг
         Config.SetValue("Token", message.Token);
         Config.SetValue("Username", Username);
         // Уведомляем об успешном входе
         MessageBoxDialog("Login success!", MessageBoxIcon.Information);
         // Открываем поледнюю книгу
         OpenLastBook();
     }
     else
     {
         // Уведомляем об ошибке
         MessageBoxDialog(message.Message);
     }
     UpdateStatusLabel();
 }