Боб використовує веб-додаток, щоб чогось досягти. І:
- Його браузер діє на дієті, тому він не підтримує файли cookie .
- Веб-додаток є популярним, він має справу з великою кількістю користувачів в даний момент - він повинен добре масштабуватися . Поки збереження сеансу накладе обмеження на кількість одночасних підключень , і, звичайно, принесе несуттєве покарання за продуктивність , ми, можливо, хотіли б мати систему без сеансів :)
Деякі важливі зауваження:
- у нас є безпека транспорту ( HTTPS та його кращі друзі);
- За шторами веб-додаток передає багато операцій зовнішнім службам від імені поточного користувача (ці системи визнають Боба одним із своїх користувачів) - це означає, що ми повинні переслати їм облікові дані Боба .
Тепер, як ми можемо автентифікувати Боба (на кожен запит)? Який би розумний спосіб здійснити таке?
- грати в теніс з обліковими записами через HTML-форму прихованих полів ... м'яч містить облікові дані ( ім’я користувача та пароль ), а дві ракетки - це браузер і веб-додаток відповідно. Іншими словами, ми можемо транспортувати дані туди-назад через поля форми, а не через cookie-файли. У кожному веб-запиті браузер розміщує облікові дані. Хоча у випадку застосування на одній сторінці це може виглядати як гра в сквош на гумовій стіні, а не в теніс , оскільки веб-форма, що містить облікові дані, може залишатися живою протягом усього життя веб-сторінки. (і сервер буде налаштований так, щоб не пропонувати назад дані).
- зберігання імені користувача та пароля в контексті сторінки - змінні JavaScript тощо. Тут потрібна односторінка, IMHO.
- зашифрована аутентифікація на основі лексеми. У цьому випадку дія входу призведе до генерації зашифрованого маркера безпеки (ім’я користувача + пароль + щось інше). Цей маркер буде повернутий клієнтові, а майбутні запити будуть супроводжуватися маркером. Це має сенс? У нас уже є HTTPS ...
- інші ...
- в крайньому випадку: не робіть цього, зберігайте облікові дані на сесії! Сесія хороша. З печивом або без нього.
Чи виникає у вас на увазі будь-яке занепокоєння щодо веб-безпеки стосовно будь-якої з описаних раніше ідей? Наприклад,
- тайм-аут - ми можемо зберігати часову позначку разом з обліковими даними (time-mark = час, коли Боб ввів свої облікові дані). Наприклад, коли ЗАРАЗ - поріг часу> поріг , ми можемо відмовити в запиті.
- Захист сценаріїв між сайтом - не повинен відрізнятися ні в якому разі, правда?
Дуже дякую, що знайшли час прочитати це :)