Прежде всего, извиняюсь, если вы думаете, что это должно быть на stackoverflow.com - это казалось более подходящим для этого сайта, но немного пограничным.
У нас есть партнерский сайт, я его назову http://bob.com
. Ради аргументации мой сайт называется http://alice.com
. Я полностью контролирую alice.com
, но нет контроля над bob.com
. Однако я могу спросить bob.com
вносить изменения на свой сайт, хотя они не хотят этого делать. Ситуация такова, что мой запрос на изменение с большей вероятностью будет реализован, если он A) маленький и B) очень четко определен. Поскольку у меня есть логин на bob.com, я могу видеть, как структурированы их запросы, пути, параметры и т. Д.
Итак, это предыстория. Проблема, которую я хочу решить, заключается в следующем: допустим, у нас есть пользователь Джимми alice.com
. В нашей базе данных alice.com у меня, конечно, есть имя пользователя и пароль Джимми (шифрую я их или нет, здесь не имеет значения). Джимми также имеет логин на bob.com
, и в моем alice.com
база данных у меня тоже есть его bob.com
имя пользователя и пароль.
Я хочу иметь кнопку на моем alice.com
сайт, на котором Джимми входит bob.com
. В простом мире эта кнопка отправила бы форму в bob.com
URL-адрес входа, передавая имя пользователя и пароль Джимми в параметрах с соответствующим именем. bob.com
примет этот запрос, и Джимми войдет в bob.com
.
Этому мешает то, что bob.com
имеет систему защиты CSRF (подделка межсайтовых запросов) с использованием токена аутентификации, привязанного к cookie. Я мог бы пытаться чтобы обойти это, отправив запрос ajax на страницу входа, прочитав токен аутентификации из ответа, а затем снова передав его с запросом формы. Однако здесь есть две проблемы:
1) Если я попытаюсь сделать запрос ajax, запрос будет отклонен, потому что ответ не имеет заголовка «Access-Control-Allow-Origin:http://alice.com", что, как я считаю, необходимо для работы запроса ajax - из раздела CORS здесь http://jquery-howto.blogspot.co.uk/2013/09/jquery-cross-domain-ajax-request.html
2) Даже если мне удастся получить токен аутентификации с помощью ajax (т.е. пройти мимо материала CORS), я не уверен, будет ли запрос работать, потому что он поступает из другого домена. Я могу управлять этим в CURL, успешно войдя в систему из моей командной строки, сохранив файл cookie и передав его в последующем запросе, но я думаю, что правила для браузера другие, и я не могу понять это.
Итак, (извините, это немного затянулось), мой вопрос:
Какое самое простое изменение я могу спросить bob.com
сделать на своем сайте, позволить кому-то на alice.com
войти в bob.com
, если alice.com
знает их bob.com
имя пользователя и пароль?
На правильном ли я пути с Ajax & CORS? Если да, то нужно ли мне просить их установить контроль доступа для нашего сайта только для отправки логина?