RESTful API Аутентификация - PullRequest
       5

RESTful API Аутентификация

16 голосов
/ 30 сентября 2011

Я нашел довольно много вопросов на эту тему в SO, но не смог найти ответа на этот вопрос:

Должен ли я проверять пользователей по их имени пользователя и паролю или по ключу API?И каковы плюсы и минусы каждого метода.

Я спрашиваю об этом, потому что в моем API есть пара методов, которые я бы хотел заблокировать и убедиться, что у пользователя есть доступ к какому-либо документу или действию.,Я немного неохотно проверяю подлинность, заставляя пользователя отправлять HTTP-заголовок AUTH со своим именем пользователя и паролем, потому что это кажется небезопасным и немного больше хлопот для пользователя.С другой стороны, если я использую ключ API, какой смысл пользователю когда-либо создавать пароль?Так как они больше не будут использовать его для доступа к функциям API.

ОБНОВЛЕНИЕ

Если другим читателям это интересно, что я в конечном итоге использовал, я решилСкопируйте, как Amazon выполняет их проверку (хорошее объяснение здесь : https://www.ida.liu.se/~TDP024/labs/hmacarticle.pdf)

Ответы [ 2 ]

7 голосов
/ 30 сентября 2011

вы можете использовать HTTP-аутентификацию через SSL, и это достаточно безопасно. Однако это немного усложняет использование API, поскольку требует, чтобы клиентская библиотека поддерживала SSL. SSL также может повлиять на производительность, если вы ожидаете слишком много вызовов одновременно.

Параметр ключа API так же небезопасен, как HTTP-аутентификация без SSL. Если вы не заботитесь о безопасности, то API Key является самым простым для потребителей API.

5 голосов
/ 30 сентября 2011

Одним из хороших методов является использование метода входа в систему с использованием имени пользователя и пароля (возможно, через TLS) Вы даете им маркер истечения срока действия, если они успешно авторизуются; остальные их вызовы API должны содержать этот токен для успеха.

...