Браузер не следует перенаправлению из ответа AJAX (сгенерированный PHP ответ использует аутентификацию CAS)

Хорошо, похоже, я ошибся в своем первоначальном вопросе. Итак, вот несколько поправок. Ответ остается в силе, потому что второе перенаправление останавливается при смене протокола на HTTPS (SSL).

В моем случае перенаправление происходит несколько раз, и браузер не следует второму перенаправлению. Выполняется первое перенаправление, но возвращается ошибка.

Я продолжаю читать, что ответы JavaScript AJAX, содержащие перенаправления, выполняются автоматически, но, похоже, не в моем случае.За первым перенаправлением автоматически следует браузер, а первое перенаправление возвращается без второго перенаправления в заголовке. Моя проблема в том, что я хочу, чтобы все перенаправления автоматически выполнялись браузером.

Перенаправления являются частью библиотеки phpCAS. У меня есть API, написанный на PHP, который каждый раз проверяет аутентификацию пользователя перед возвратом результатов.

Вот последовательность. Главное отметить, что браузер возвращает второй ответ после выполнения 1 редиректа. Я бы предпочел, чтобы он прошел весь путь и вернул последний ответ, когда я делаю AJAX-вызов localhost/example/api.

localhost/example

  • Вызовы localhost/example/apiс использованием jQuery.ajax()

Ответ 1: localhost/example/api

  • Перенаправление на https:// localhost/accounts/cas/login?service=api.example.com&gateway=true(с использованием SSL).

Ответ 2: (SSL) localhost/accounts/cas/login?service=api.example.com&gateway=true

  • При наличии ключа запроса «шлюз» логин просто перенаправляется обратно на URL-адрес, предоставленный ключ «сервис» с билетом или без него (чтобы сообщить сервису, что пользователь либо вошел в систему, либо нет).

Ответ 3: localhost/api?ticket=TICKET

  • Проверяет билет и перенаправляет обратно на себя без билета.

Ответ 4: localhost/api

  • На этот раз клиент CAS просматривает $_SESSION, чтобы вспомнить, какой был билет, а затем обрабатывает запрос API, возвращающий JSONP.

Нет особой причины использовать CAS вместо OpenID или OpenAuth(orization).CAS был лишь первым модулем аутентификации, который мне удалось заставить работать в WordPress. Я открыт для предложений по использованию другой библиотеки аутентификации, CMS, фреймворка и т. д. Хотя я надеюсь просто завершить этот проект. Так что чем меньше переделывать, тем лучше.

5
задан Biagio Arobba 7 April 2012 в 23:38
поделиться