Один из способов, с помощью которых я видел это в API (и способ, которым я сейчас его реализую), - это создание ресурса RESTful с именем Session , который создается через POST , который предоставляет имя пользователя и пароль.
Вот как я это реализовал:
POST /sessions { Username: "User", Password: "Password" }
Создать сеанс с ограничением по времени и возвращает ресурс сеанса, который содержит значение ключа сеанса и срок его действия. Вы также можете вернуть это значение cookie для удобства реализации клиентов API.
DELETE /session/{id}
Немедленно истекает сеанс, поэтому он больше не может быть использован. Это используется для явных выходов.
Затем пользователь может присоединить ключ сеанса с помощью параметра запроса, хотя вы также можете разрешить отправку его с помощью значения cookie, я рекомендую разрешить оба.
Что я предпочитаю в этом, так это то, что это чрезвычайно просто.
Очевидно, ваш сценарий будет в некоторой степени диктовать, каким образом следует управлять вашими сеансами, возможно, они не ограничены во времени и сохраняются бесконечно, и, возможно, они хешируются или шифруются для дополнительной безопасности.
Если вы используете HTTPS везде, вам, вероятно, не нужно слишком беспокоиться. Однако, если вы хотите использовать HTTP, вам нужно будет использовать что-то вроде хеш-кода вместе с секретным ключом и сказать отметку времени, чтобы сгенерировать безопасный ключ для каждого запроса. Таким образом, вы можете поделиться секретным ключом через HTTPS, а затем переключиться на HTTP для дальнейших вызовов. Даже если кому-то удастся найти ключ в запросе, он может истечь почти мгновенно и быть бесполезным.
Отказ от ответственности: я не эксперт по безопасности; -).