У мене є цей веб-додаток, який буде використовувати всі технології клієнтів (HTML, CSS, JavaScript / AngularJS тощо). Цей веб-додаток буде взаємодіяти з REST API для доступу та зміни даних. Зараз не визначено, який тип системи аутентифікації REST API буде використовувати.
Наскільки я розумію, будь-який тип системи аутентифікації API (API ключі, OAuth 1/2 тощо) має певні дані, які потрібно зберігати в таємниці, інакше доступ може бути порушений. Для ключів API вони повинні бути секретними, для OAuth 2 клієнтська таємниця / маркери доступу / маркер оновлення потрібно зберігати в секреті, я впевнений, що кілька із 4-х клавіш, що беруть участь в OAuth 1, потрібно зберігати в таємниці (не занадто великий досвід роботи з OAuth 1). Я намагався подумати, чи є спосіб зберігати цей секретний матеріал у чистому веб-додатку на стороні клієнта без середнього шару на стороні сервера.
Я намагався подумати над цим, і не можу придумати жодного місця для цього. Я маю на увазі, що я не можу зберігати його в JavaScript, тому що кожен може просто переглянути джерело або відкрити консоль і отримати дані. Я не на 100% впевнений, наскільки безпечний локальний сховище та чи користувачі можуть отримати доступ / змінити ці дані. Навіть якщо локальне зберігання було безпечним, я не можу думати, як отримати дані до нього. Один із способів - просто зберігати дані у вихідному коді JavaScript, що є найнебезпечнішим, про що я можу придумати. Тепер, якщо я використовував щось на кшталт OAuth 2, в якому решта api сама дала би мені лексеми, це все одно не буде настільки безпечним (краще, ніж перший варіант), тому що ці лексеми будуть повернені як звичайний текст, що кожен, хто може побачити запити, які робить комп'ютер, можуть бачити.
Чи є спосіб, щоб програма, яка повністю працює з клієнтом, змогла надійно зберігати секретні фрагменти даних без якогось середнього шару на стороні сервера?