Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Розробка навчальної клієнт – серверної програми

Автор:   •  Январь 17, 2021  •  Лабораторная работа  •  11,940 Слов (48 Страниц)  •  278 Просмотры

Страница 1 из 48

Лабораторна робота №1

з курсу: «Системи та засоби автентифікації»

на тему: «Розробка навчальної клієнт – серверної програми»

Львів 2020

Мета роботи: ознойомитися з основними принципами ідентифікації та парольної автентифікації, розробити навчальну клієнт – серверну програму на базі стеку TCP/IP ( у вигляді окремих модулів, клієнтського і серверного).

Завдання

Розробити навчальну клієнт – серверну програму на базі стеку TCP/IP ( у вигляді окремих модулів, клієнтського і серверного).

Програма  повинна виконувати ідентифікацію та  парольну автентифікацію користувачів. Пароль користувачів повинен зберігатись на сервері у вигляді хеш-значення. Для шифрування паролів застосувати метод «необоротної збірки».

Необхідно також передбачити ведення політики безпеки адміністратором даної програми. Політика безпеки містить:

  • можливість зміни свого пароля користувача;
  • можливість встановлення максимальної кількості неправильного вводу пароля;
  • можливість встановлення обов’язкової зміни пароля при 1-шій реєстрації користувача
  • можливість скидання пароля адміністратором

Виконання

Серверна частина

Клас Program.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Net;

using System.Net.Sockets;

using System.Threading;

using System.Security.Cryptography.X509Certificates;

using System.Collections.ObjectModel;

using System.Runtime.Serialization;

using System.Runtime.Serialization.Formatters.Binary;

using System.IO;

namespace SZA_Lab1_Server

{

    public class Program

    {

        static void Main(string[] args)

        {

            Program p = new Program();

            Console.WriteLine();

            Console.WriteLine("Press enter to close program.");

            Console.ReadLine();

        }

        // Self-signed certificate for SSL encryption.

        // You can generate one using my generate_cert script in tools directory (OpenSSL is required).

        public X509Certificate2 cert = new X509Certificate2("server.pfx", "qwerty");

        // IP of this computer. If you are running all clients at the same computer you can use 127.0.0.1 (localhost).

        public IPAddress ip = IPAddress.Parse("127.0.0.1");

        public int port = 2000;

        public bool running = true;

        public TcpListener server;

        public Dictionary<string, UserInfo> users = new Dictionary<string, UserInfo>();  // Information about users + connections info.

        public Program()

        {

            Console.Title = "SZA Lab1 Server";

            Console.WriteLine("----- SZA Lab1 Server -----");

            LoadUsers();

            Console.WriteLine("[{0}] Starting server...", DateTime.Now);

            server = new TcpListener(ip, port);

            server.Start();

            Console.WriteLine("[{0}] Server is running properly!", DateTime.Now);

            Listen();

        }

        void Listen()  // Listen to incoming connections.

        {

            while (running)

            {

                TcpClient tcpClient = server.AcceptTcpClient();  // Accept incoming connection.

                Client client = new Client(this, tcpClient);     // Handle in another thread.

            }

        }

        string usersFileName = Environment.CurrentDirectory + "\\users.dat";

        public void SaveUsers()  // Save users data

        {

            try

            {

                Console.WriteLine("[{0}] Saving users...", DateTime.Now);

                BinaryFormatter bf = new BinaryFormatter();

                FileStream file = new FileStream(usersFileName, FileMode.Create, FileAccess.Write);

                bf.Serialize(file, users.Values.ToArray());  // Serialize UserInfo array

                file.Close();

                Console.WriteLine("[{0}] Users saved!", DateTime.Now);

            }

            catch (Exception e)

            {

                Console.WriteLine(e.ToString());

            }

        }

        public void LoadUsers()  // Load users data

        {

            try

            {

                Console.WriteLine("[{0}] Loading users...", DateTime.Now);

                BinaryFormatter bf = new BinaryFormatter();

                FileStream file = new FileStream(usersFileName, FileMode.Open, FileAccess.Read);

...

Скачать:   txt (35 Kb)   pdf (844.5 Kb)   docx (903 Kb)  
Продолжить читать еще 47 страниц(ы) »
Доступно только на Essays.club