2014-02-18 3 views
0

Архитектура REST реализует GET, POST, PUT и DELETE запросов. Я хотел бы поговорить о запросах GET. http://example.com/api/students это запрос GET под архитектурой REST, который даст мне список студентов в базе данных.Аутентификация на RESTful API по запросам GET

Мой вопрос об аутентификации. мне кажется, что лучший способ аутентификации на запрос GET будет с помощью Access Token, как http://example.com/api/students?token=randomstring

Как это обрабатывается ServerSide, я имею в виду secuencial процесс, чтобы предотвратить кто-то от кражи доступа другого пользователя маркер и использовать его. Является ли токен обновленным по каждому запросу и возвращается по результатам или что-то в этом роде?

ответ

0

Прежде всего - вы никогда не должны ставить учетные данные (токены доступа) в URL-адресах. Это не совсем неправильно или запрещено как таковое - это просто плохая практика, поскольку она не позволяет обмениваться URL-адресами без предоставления секретных полномочий (подумайте о том, что произойдет, если вы скопируете URL-адрес в электронном письме и отправте его другу). Учетные данные в URL-адресах просто упрощают случайное раскрытие их другим.

Возьмите жетон и запишите его в заголовок авторизации HTTP - вот почему у нас оно есть. Существует много разных способов использования этого заголовка, но в вашем случае вы бы хотели использовать метод токенов. Вот пример из RFC (http://tools.ietf.org/html/rfc6750):

GET /api/students HTTP/1.1 
Host: example.com 
Authorization: Bearer rAndomSTRiNg 

На сервере вы проверить достоверность маркера, прежде чем делать что-нибудь еще. Чтобы другие не могли воровать, вы применяете SSL/TLS в соединении.

Возможно, необходимо обновить токен, но это зависит от того, как вы его приобрели и остальной инфраструктуры. Обычно вам не нужно обновлять его для каждого запроса - только через определенное время, когда оно истекло.

Возможно, вы захотите взглянуть на OAuth2, который определяет четыре основных способа получения токенов доступа.

Смежные вопросы