Користувацьке використання заголовка авторизації в API REST


10

Я будую REST api, де клієнти аутентифікуються за допомогою клієнтських сертифікатів. Клієнт у цьому випадку - це не індивідуальний користувач, а якийсь шар презентації. Користувачі аутентифікуються за допомогою користувацького підходу, і відповідальність шару презентації є переконатися, що це правильно зроблено (зауважте: я знаю, що це не правильний підхід, але api не є загальнодоступним).

Я хотів би передати ім’я користувача для кожного запиту (не пароль), але я не знаю, де це зробити. Було б корисно використовувати заголовок Авторизація?

Відповіді:


21

Використання заголовка Авторизація здається правильним. Це все призначення заголовка авторизації.

З http://tools.ietf.org/html/rfc7235#section-4.2 :

Поле заголовка "Авторизація" дозволяє агенту користувача автентифікувати себе на сервері походження - зазвичай, але не обов'язково, після отримання відповіді 401 (Несанкціонований). Його значення складається з облікових даних, що містять інформацію про автентифікацію агента користувача для сфери запитуваного ресурсу.

Якщо у вас є власна схема авторства, документуйте її, але не потрібно винаходити колесо.


3
Це не просто , здається , як правильно, це є правильно. (Я це досліджував цілий день) Розділ 4.1 в RFC 7235 прямо демонструє використання спеціальної схеми "Newauth" у "Наприклад", а також стандартної схеми "Basic", що дозволяє клієнту використовувати свій вибір будь-якої схеми . Однак, якщо ви використовуєте "стандартну" схему, ви повинні правильно її використовувати. Відповідь Зака ​​правильна, а Філіп - неправильна .
Стівен П

3

Я б не рекомендував використовувати стандартний HTTP-заголовок нестандартно. Передусім тому, що це може ввести в оману інших розробників, які знають, як Authoriziationзаголовок призначений для використання в аутентифікації HTTP, але також щоб уникнути будь-яких можливих проблем з іншими частинами вашого стека, що мають суперечливу обізнаність з тим же заголовком запиту.

У будь-якому випадку, ніщо не заважає використовувати спеціальний нестандартний X-Authorization-Userзаголовок спеціально для ваших цілей.


100% погодились. Якщо ви хочете зробити щось на замовлення, для цього потрібні X-префіксні заголовки. Якщо ви збираєтесь використовувати стандартний заголовок, не використовуйте його для нічого незвичайного чи несподіваного.
Carson63000

2
Просто подумав , що я хотів би згадати про те , що «Х» застаріла: stackoverflow.com/questions/3561381 / ...
Matsen75

Відповідно до цієї відповіді, чи означає це, що Amazon S3 робить це неправильно? docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
Tom Lianza

4
-1. Як зауважив Зах Денніс, на відміну від більшості інших заголовків HTTP, заголовок авторизації призначений для розширення і чітко визначений спосіб визначення власної схеми авторизації. У оболонці горіха просто переконайтеся, що ви використовуєте назву власної схеми авторизації.
Лежати Райан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.