#json #wordpress #api #rest
Вопрос:
Я создал API-интерфейсы rest на своем wp-сервере . Я не хочу открывать api для публичного доступа, просто хочу получить к нему доступ из своего собственного приложения. Этот вопрос был задан ранее, но на него нет четкого ответа . Я пытался использовать JWT, но в моем случае это недопустимо, потому что в JWT мне нужно войти в систему пользователя, что в моем случае невозможно . Я просто хочу, чтобы мой rest api был защищен, чтобы получить доступ из моего приложения для Android без входа в систему.
Ответ №1:
Это невозможно.
Подумайте об этом так… Предположим, вы ждете друга на ужин. Кто-то стучит в твою дверь. «Кто это?»- спрашиваете вы. «Я твой друг», — отвечает голос.
Итак, это действительно твой друг у двери? В конце концов, вы должны были спросить их, кто они такие. Может быть, это кто-то, притворяющийся твоим другом. Вы можете проверить основы… ожидали ли их в это время? Они похожи на твоего друга? Но ты действительно не знаешь, твой друг это или нет. Это может быть кто-то, подражающий протоколу и звучащий как ваш друг. Этот сценарий на самом деле ничем не отличается от того, что кто-то подменяет ваше приложение для выполнения вызовов API. Он может идентифицировать себя как ваше приложение, и поскольку вам приходится полагаться на эту информацию, вы не можете реально доказать, что это ваше приложение вызывает API или нет.
Может быть, по другому сценарию у вас будет вечеринка. Чтобы попасть на вечеринку, вы должны знать пароль. Тем не менее, вы хотите, чтобы это была действительно большая вечеринка, поэтому вы расклеиваете листовки по всему городу и указываете пароль на листовках. Это похоже на то, что вы делаете, когда у вас есть общедоступное приложение со встроенным в него ключом API. У всех есть пароль, поэтому вы защищаете свой API только от случайных запросов, незнакомых с вашим приложением.
JWT действительно не имеет абсолютно никакого отношения к логинам пользователей. Но, в любом случае, JWT вам здесь не поможет. Даже если вы подписали несколько токенов, они все равно должны быть встроены в ваше приложение.
Что вы можете сделать, так это взаимно аутентифицировать оба конца с помощью TLS-соединения. Используйте закрепление сертификата. Но даже все это не является доказательством глупости. Все еще возможно, что кто-то притворится вашим приложением.
Здесь нет никакой магии, которую можно было бы сотворить. Если вы хотите, чтобы люди получали доступ к вашему API, вы должны предоставить людям доступ к вашему API.