{"id":15832251,"url":"https://github.com/splincode/simple-authorize-service","last_synced_at":"2025-04-01T12:10:31.944Z","repository":{"id":102321631,"uuid":"109871358","full_name":"splincode/simple-authorize-service","owner":"splincode","description":null,"archived":false,"fork":false,"pushed_at":"2018-11-28T10:13:24.000Z","size":194,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-06T12:41:55.843Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/splincode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-07T17:55:48.000Z","updated_at":"2019-06-05T18:02:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"84589dc5-6d06-4022-93f2-09f1f627a908","html_url":"https://github.com/splincode/simple-authorize-service","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splincode%2Fsimple-authorize-service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splincode%2Fsimple-authorize-service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splincode%2Fsimple-authorize-service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splincode%2Fsimple-authorize-service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/splincode","download_url":"https://codeload.github.com/splincode/simple-authorize-service/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246635983,"owners_count":20809333,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-05T12:41:30.089Z","updated_at":"2025-04-01T12:10:31.923Z","avatar_url":"https://github.com/splincode.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Разработка программы  разграничения полномочий \n\n![](https://habrastorage.org/webt/ru/ds/z1/rudsz1ejm9bhyxigaszc51pe7uw.png)\n\nРазработка распределенной системы  разграничения полномочий пользователей на основе парольной аутентификации\n\n1.\tПрограмма должна обеспечивать работу в двух режимах: администратора (пользователя с фиксированным именем ADMIN) и обычного пользователя.\n2.\tВ режиме администратора программа должна поддерживать следующие функции (при правильном вводе пароля):\n•\tсмена пароля администратора (при правильном вводе старого пароля);\n•\tпросмотр списка имен зарегистрированных пользователей и установленных для них параметров (блокировка учетной записи, включение ограничений на выбираемые пароли) – всего списка целиком в одном окне или по одному элементу списка с возможностью перемещения к его началу или концу;\n•\tдобавление уникального имени нового пользователя к списку с пустым паролем (строкой нулевой длины);\n•\tблокирование возможности работы пользователя с заданным именем;\n•\tвключение или отключение ограничений на выбираемые пользователем пароли (в соответствии с индивидуальным заданием, определяемым номером варианта);\n•\tзавершение работы с программой.\n3.\tВ режиме обычного пользователя программа должна поддерживать только функции смены пароля пользователя (при правильном вводе старого пароля) и завершения работы, а все остальные функции должны быть заблокированы.\n4.\tПосле своего запуска программа должна запрашивать у пользователя в специальном окне входа ввод его имени и пароля. При вводе пароля его символы всегда должны на экране заменяться символом ‘*’.\n5.\tПри отсутствии введенного в окне входа имени пользователя в списке зарегистрированных администратором пользователей программа должна выдавать соответствующее сообщение и предоставлять пользователю возможность повторного ввода имени или завершения работы с программой.\n6.\tПри неправильном вводе пароля программа должна выдавать соответствующее сообщение и предоставлять пользователю возможность повторного ввода. При трехкратном вводе неверного пароля работа программы должна завершаться.\n7.\tПри первоначальном вводе пароля (обязательном при первом входе администратора или пользователя с зарегистрированным ранее администратором именем) и при дальнейшей замене пароля программа должна просить пользователя подтвердить введенный пароль путем его повторного ввода.\n8.\tЕсли выбранный пользователем пароль не соответствует требуемым ограничениям (при установке соответствующего параметра учетной записи пользователя), то программа должна выдавать соответствующее сообщение и предоставлять пользователю возможность ввода другого пароля, завершения работы с программой (при первом входе данного пользователя) или отказа от смены пароля.\n9.\tИнформация о зарегистрированных пользователях, их паролях, отсутствии блокировки их работы с программой, а также включении или отключении ограничений на выбираемые пароли должна сохраняться в специальном файле. При первом запуске программы этот файл должен создаваться автоматически и содержать информацию только об администраторе, имеющем пустой пароль.\n10.\tИнтерфейс с программой должен быть организован на основе меню, обязательной частью которого должно являться подменю «Справка» с командой «О программе». При выборе этой команды должна выдаваться информация об авторе программы и выданном индивидуальном задании. Интерфейс пользователя программы может также включать панель управления с дублирующими команды меню графическими кнопками и строку состояния.\n11.\tДля реализации указанных в пунктах 2-3 функций в программе должны использоваться специальные диалоговые формы, позволяющие пользователю (администратору) вводить необходимую информацию.\n\nИндивидуальные варианты заданий (ограничения на выбираемые  пароли)\nНаличие латинских букв и символов кириллицы.\n\n## Решение\n\n#### Сгенерировать SSL сертификаты для использования https\n\nOpenSSL – это криптографическая библиотека, которая является open source реализацией двух протоколов: Secure Sockets Layer (SSL) и Transport Layer Security (TLS). Данная библиотека имеет инструменты, предназначенные для генерации приватных ключей RSA и Certificate Signing Requests (CSR-запросов), управления сертификатами и выполнения шифрования/дешифрования. Библиотека OpenSSL написана на C, однако существуют оболочки для широкого спектра языков программирования.\n\nДля генерации секретного ключа (key) и запроса на сертификат (CSR) используется утилита OpenSSL.\n\n```\n$ openssl req -newkey rsa:2048 -nodes -keyout simple-authorize-service.private.key -x509 -days 365 -out simple-authorize-service.certificate.crt\n\nGenerating a 2048 bit RSA private key\n......................................................+++\n..........................+++\nwriting new private key to 'simple-authorize-service.private.key'\n-----\nYou are about to be asked to enter information that will be incorporated\ninto your certificate request.\nWhat you are about to enter is what is called a Distinguished Name or a DN.\nThere are quite a few fields but you can leave some blank\nFor some fields there will be a default value,\nIf you enter '.', the field will be left blank.\n-----\n\n```\n\nСертификат нужно добавить в доверенные сертификаты.\n\nДобавить в корневые на Windows:\n\n```\n$ certutil.exe -addstore -f -user -v Root simple-authorize-service.certificate.crt\n```\n\n![](https://habrastorage.org/webt/8q/jh/wx/8qjhwx0wcjx13aylqboarnpbvfe.png)\n\n![](https://habrastorage.org/webt/yr/ll/hm/yrllhm77zlvvljis1c2zkibdrxg.png)\n\n![](https://habrastorage.org/webt/ve/v0/la/vev0larn3x4dagfhnatrpag5sqw.png)\n\n![](https://habrastorage.org/webt/vd/6y/t9/vd6yt95o7qx71rova8rg7y19ogi.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsplincode%2Fsimple-authorize-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsplincode%2Fsimple-authorize-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsplincode%2Fsimple-authorize-service/lists"}