Делаю приложение под windows. Пишу клиент на electron + angular. Мне нужно реализовать привязку программы к компьютеру так, чтобы иметь возможность посмотреть ключ в angular. В моей задумке я должен сверять этот ключ с сохранённым на сервер, потому он должен быть статичным. MAC-адрес не подходит. В своей другой реализации я обнаружил, что он меняется при переключении Wifi и Ethernet
До того, как портить жизнь лояльным пользователям привязками к железу (которые нелояльные все равно обойдут), рассмотрите все возможности просто генерировать UUID при установке приложения и не делать голову ни себе, ни людям.
Программа по подписке работает, это коммерческое решение. UUID постоянно меняется, мне нужно либо хранить его и на клиенте и на сервере, либо брать какой-нибудь статичный идентификатор/номер в системе, к примеру, жёсткого диска.. Но как его получить через angular? или хотя бы через nodejs, который есть в electron... ищу информацию..
Даже если вы ухитритесь из электрона дернуть метод WinAPI по определению серийника системного диска - вам потом разгребать "а как мне перенести программу, я опять переустанавливаю винду????" (при переустановке диск форматируется и серийник тома меняется).
Не говоря уже про предложенные варианты цепляться к видюхе, которая вообще может смениться в любой момент.
Логично что если вы не можете привязать что-то к железу пользователя, есть смысл привязать свое железо к машине пользователя. Если это коммерческое решение - лучший вариант для защиты - физический ключ - донгл. Это ебатория и гемор для клиента, удорожание для вас (ну или для клиента тоже), но дает четкую связку с железом, как вы и хотели. То есть одновременно работать сможет лишь один компьютер с 1 донглом.
На данный момент у меня реализовано это так. Приложение на electron - это бот, который выполняет разные алгоритмы на сайте за пользователя. Приложение не работает без подключения к интернету. При запуске приложение получает mac адрес, шифрует его и с остальными данными посылает на сервер, где происходит проверка с сохранённой записью. Если всё ок, проверяется время подписки, всё такое. По результату возвращаем команду на отображение одно из интерфейсов.
В новой версии я внедрил angular. Теперь мне нужно по возможности, через него каждый раз получать какой-нибудь постоянный ключ системы и передавать его на сервер.
Возможно этот плагин решает мой вопрос: https://www.npmjs.com/package/serial-number - он привязывается к железу, как я понял на Node.js (на клиенте в связке с electron). Осталось разобраться, как его в ангуляре использовать. Или есть что-то ещё, другое?
Денис Щербина, если у вас постоянная связь с юзером через ваш сайт - на хрена вам вообще привязывать к чему-то клиент? Выдайте юзеру токен и формируйте ему отпечаток, например, из {текущий пользователь Windows}{имя компьютера}{внешний айпишник}. Блокируя их слишком частую смену.