Задача: Есть сервер на .Net, при подключении к нему, клиентские приложения проходят авторизацию. Нужно чтобы сервер ограничивал количество одновременно авторизирированных пользователей согласно количеству купленных лицензий. (если куплено 30 лицензий, то при попытке аворизироваться 31м — отвечать ему отказом)
После того как я погуглил и покумекал у меня возникла
Идея:
Шаг 1:вынести саму проверку в маленький класс (назовем его
LicenseCheker), который в результате проверки должен возвращать некий
токен- объект реализующий спец.интерфейс
ILicenseToken. Если в результате проверки мы получил токен — все ок.
Шаг 2: Код реализующий
LicenseCheker и
ILicenseToken выносим в отдельный файл. шифруем его закрытым ключем.
Шаг 3: Во время выполнения расшифровуем файл, проводим динамическую компиляцию — получаем работающий код.
Шаг 4: (????)Для надежности можно раз в 15 минут сбрасывать и повторять шаг 3
Дополнительно: можно все это поместить в электронный ключ.
Вопросы:
1. На сколько идея бредовая
2. Посоветуйте хороший алгоритм шифровканиичя открытым\закрытым ключем. Есть ли готовые реализации?
3. Что вы думаете по поводу электронного ключа — нужно ли это тут
4.(совсем неккоретный, но) Как бы вы оценили объем трудозатрат.
Огромное спасибо за ответы