Існує ще один, дуже безпечний метод. Це сертифікати клієнта. Знаєте, як сервери представляють сертифікат SSL, коли ви зв’язуєтесь з ними на https? Ну сервери можуть запитувати сертифікат у клієнта, щоб вони знали, що клієнт є тим, ким вони кажуть. Клієнти генерують сертифікати та передають їх вам по захищеному каналу (як, наприклад, прихід у ваш офіс із USB-ключем - бажано не троянським USB-ключем).
Ви завантажуєте відкритий ключ сертифікатів клієнта сертифіката (і сертифікати їх підписувача, якщо це необхідно) на ваш веб-сервер, і веб-сервер не прийматиме підключення ні від кого, крім людей, які мають відповідні приватні ключі для сертифікатів воно знає про. Він працює на рівні HTTPS, тому ви навіть можете повністю пропустити автентифікацію на рівні програми, наприклад OAuth (залежно від ваших вимог). Ви можете абстрагувати шар і створити місцевий Центр сертифікації та підписати Запити сертифікатів від клієнтів, дозволяючи пропустити кроки "змусити їх зайти в офіс" та "завантажити сертифікати на сервер".
Біль у шиї? Абсолютно. Хороший для всього? Ні. Дуже безпечно? Так.
Однак він покладається на клієнтів, які зберігають свої сертифікати в безпеці (вони не можуть розміщувати свої приватні ключі в Інтернеті), і зазвичай він використовується, коли ви продаєте послугу клієнтам, а не дозволяєте будь-кому реєструватися та підключатися.
У будь-якому випадку, це може бути не рішення, яке ви шукаєте (це, мабуть, не чесно), але це інший варіант.