Якщо ви будете залежати від надання клієнтам жетонів авторизації для розміщення їхніх програм, теоретично завжди буде можливо, щоб хтось змінив програму та витяг її. Щоб запобігти цьому, вам знадобиться механізм, який не вимагатиме секрету в додатку для клієнта. Це хитро. Я можу запропонувати вам кілька варіантів, про які варто подумати.
У вас виникли проблеми, коли ви видали облікові дані, ви не маєте контролю над тим, наскільки надійно вони зберігаються. Крім того, якщо ви вимагаєте від користувача надіслати ваші облікові дані, тоді хтось може MITM ваш зв’язок і викрасти жетони безпосередньо, не турбуючись про зворотну інженерію програми.
Один із способів ускладнення вилучення вашого маркера авторизації - це притуплення. Це просто піднімає планку, але не робить неможливим, і для цього вам доведеться зберегти контроль над секретом. Ви можете впровадити бібліотеку, яка містить секретну інформацію та специфічна для кожного клієнта. Ви можете використовувати бібліотеку для спілкування з вашими серверами, і, можливо, вам навіть не доведеться повідомляти користувачеві секретну інформацію, вона може бути просто вбудована в бібліотеку. Це не вирішує проблему, коли хтось зворотно розробляє вашу бібліотеку, але все-таки ставить вас під контроль рівня затуплення. Недоліком є те, що після того, як одна людина порушила затуманення в бібліотеці, вона може напасти на будь-яку вашу бібліотеку, якщо ви не пишете код, який робить кожну бібліотеку істотно різною. Це представляє власну сукупність проблем.
Це може трохи відійти від сфери вашого запитання, але це пов'язано з безпекою вашого маркера, тому я згадаю його. Щоб запобігти тривіальному розкраданню токена по дроту, ви, ймовірно, не хочете надсилати маркер безпосередньо, натомість ви могли підписати трафік за допомогою функції HMAC. Можна перевірити дійсність повідомлення, обчисливши HMAC повідомлення на сервері та порівнявши його з HMAC, надісланим від клієнта. Ви б використовували маркер як ключ до функції HMAC, тому лише той, хто знає маркер, може підписувати трафік. Це краще для безпеки вашого маркера, тому що ви ніколи не надсилаєте його безпосередньо на сервер, щоб його не можна було перехопити та вкрасти безпосередньо. Для отримання додаткової інформації про HMACS див. Це запитання: /security/20129/how-and-when-do-i-use-hmac/20301
Жодне рішення щодо безпеки не буде неприступним, ви повинні вирішити, скільки вам буде коштувати впровадити проти ймовірності та витрат на компроміс.