HTTP не имеет состояния, поэтому любое использование сеанса идет вразрез с дизайном HTTP (и большинство проблем с дизайном и безопасностью в Интернете сегодня проистекает из этого).
Для достижения подлинной аутентификации без сохранения состояния используйтеЗаголовки WWW-Authenticate и Authorization с вашим API, или обновите API для предоставления через HTTP + TLS (https), выдайте каждой учетной записи пользователя API сертификат X509, который идентифицирует их, а затем запросите его при каждом вызове API (вызатем можно идентифицировать их по открытому ключу, который вы сохраняете в учетной записи как ключ API).
ps: всегда стоит читать в контексте, глава 6 диссертации Роя неоценима, но часто игнорируетсядля этой единственной главы 5 REST.
может расширить ответ, если вам это необходимо:) расширение ..
Авторизация заголовок запроса и WWW-Authenticate заголовок ответа являются стандартными заголовками HTTP, используемыми для проверки подлинности ответа на вызов , двух комм.n и стандартизированные методы для использования с этими заголовками: Basic и Digest Authentication.Если учетные данные авторизации отправляются с запросом, который вы обрабатываете, чтобы разрешить доступ, в противном случае произошел сбой с соответствующим кодом состояния, или с помощью запроса с использованием заголовка ответа WWW-Authenticate, поток такой же, как аутентификация на основе формы, но он работает на RESTful HTTPвместо уровня, и следует использовать для проверки каждого запроса, а не для установки сеанса (, как большинство делают с аутентификацией на основе форм ).
HTTP + TLS /Метод x509 , на который я ссылаюсь, обычно известен как аутентификация с открытым ключом , опять же, он работает на уровне протокола, а не на уровне приложений и изначально поддерживается.Короче говоря, клиент имеет личный ключ + сертификат + открытый ключ на своей стороне, когда он подключается к вам, сертификат (который включает в себя открытый ключ) отправляется на сервер, вы затем читаете подробности из сертификата (если вы хотите) и использовать открытый ключ для их авторизации, если вы узнаете его, то впустите их. Это более безопасно, поскольку он использует стек HTTP + TLS, где все зашифровано и соединение между клиентом и сервером не имеет ничего промежуточного, и в первую очередьпотому что фактически «пароль» состоит из двух частей: закрытого ключа, который никогда не покидает свою машину, и открытого ключа, который вместе создает пару ключей.
В руководстве по PHP есть хороший разделдля HTTP-аутентификации с кодом (для метода заголовков) и все функции, необходимые для HTTP + TLS / x509 , также приведены в руководстве (примеры приведены в документации, но разбиты на различные функции).