Для автентичних користувачів існує безліч способів як для веб-додатків, так і для API. Існує кілька стандартів, або ви можете написати власну власну авторизацію / та автентифікацію. Я хотів би вказати на різницю між авторизацією та автентифікацією. По-перше, програма повинна аутентифікувати користувача (або клієнта API), з якого надходить запит. Після аутентифікації користувача на основі ідентифікації користувача програма повинна визначити, який аутентифікований користувач має дозвіл на виконання певної програми (авторизації). Для більшості традиційних веб-додатків у моделі безпеки немає тонкої деталізації, тому, як тільки користувач проходить автентифікацію, він у більшості випадків також уповноважений виконувати певні дії. Однак ці дві концепції (автентифікація та авторизація) повинні бути як дві різні логічні операції.
Більше того, в класичних веб-додатках, після того, як користувач пройшов автентифікацію та авторизацію (переважно шляхом пошуку пари ім’я користувача / пароль у базі даних), інформація про авторизацію та ідентифікацію записується у сховище сеансів. Сховище сеансів не повинно бути на стороні сервера, як передбачається більшістю відповідей вище, воно також може зберігатися в файлі cookie на стороні клієнта, зашифрованому в більшості випадків. Наприклад, платформа PHP CodeIgniter робить це за замовчуванням. Існує ряд механізмів захисту сеансу на стороні клієнта, і я не бачу такий спосіб зберігання даних сеансу менш захищеним, ніж зберігання sessionId, який потім шукається в сховищі сесій на стороні сервера. Крім того, зберігання сеансу на стороні клієнта досить зручно в розподіленому середовищі,
Більше того, автентифікація за допомогою простої пари користувач-пароль не обов’язково повинна здійснюватися за допомогою спеціального коду, який шукає відповідний запис користувача у базі даних. Існує, наприклад, базовий протокол автентифікації або дайджест-аутентифікація . У власному програмному забезпеченні, такому як платформа Windows, є також способи автентифікації користувачів через, наприклад, ActiveDirectory
Забезпечення пари ім’я користувача / пароль - це не лише спосіб автентифікації; якщо використовується протокол HTTPS, ви також можете розглянути можливість автентифікації за допомогою цифрових сертифікатів .
У конкретному випадку використання, при розробці веб-служби, яка використовує SOAP як протокол, існує також розширення WS-Security для протоколу SOAP.
З урахуванням усього сказаного, я б сказав, що відповіді на наступне питання вводять процедуру прийняття рішення щодо вибору механізму авторизації / автентифікації для WebApi:
1) Яка цільова аудиторія, чи є вона загальнодоступною чи лише для зареєстрованих (платних) членів?
2) Чи він запущений, або * NIX, або платформа MS
3) Яка кількість користувачів очікується
4) Скільки стосується API конфіденційних даних (сильніші та слабші механізми автентифікації)
5) Чи існує якась служба єдиного входу, якою ви могли б скористатися
.. та багато іншого.
Сподіваюся, це трохи очистить речі, оскільки в рівнянні є багато змінних.