2016-02-14 3 views
3

Я реализую неявный тип гранта OAuth в приложении Javascript, используя Angular. Я хотел бы запросить токен, используя запрос AJAX. Когда я делаю запрос на свой сервер OAuth, он отвечает 302 и заголовком location. Согласно спецификации, это мой настроенный URL перенаправления с хэш-фрагментом, содержащим токен доступа.OAuth2 Неявный грант с Ajax

Моя проблема заключается в том, что я не могу прочитать хэш-фрагменты, если это запрос ajax, так как XmlHttpRequest автоматически следует за заголовком местоположения. Кажется, я не получаю никакой информации об исходном ответе (тот, у кого есть 302, и имеет заголовок местоположения.) Если бы какой-то способ перехватить этот ответ и зачитать заголовок местоположения, я бы установил.

Я хотел бы просить токен произойти за кулисами, без того, чтобы пользователь знал, что это даже происходит. (То есть без URL-адреса браузера). Я должен также упомянуть, что я работаю в среде, где имеется SSO, и пользователь, скорее всего, уже прошел аутентификацию через SSO. Пока мой сервер OAuth обнаруживает куки-файлы SSO, он будет знать, что пользователь ранее был аутентифицирован и просто выдал токен для этого приложения, без необходимости перенаправления на страницу входа в систему.

Есть ли способ прочитать заголовок местоположения первого ответа или прочитать перенаправленный URL? Похоже, что сам ххр делает все возможное, чтобы предотвратить это, поэтому я также задаюсь вопросом, в чем причина этого?

+0

Не похоже, что вы задаете реальный вопрос. – mikefrey

ответ

0

oauth Implicit Grant обычно открывает окно входа в систему, чтобы пользователь мог принять интегратора услуг, а затем предоставить свои учетные данные. Используя JavaScript, вы можете прочитать хэш, выполнив код, похожий на:

var browserRef = window.open(add your URL here, '_blank','location=yes,clearsessioncache=yes,clearcache=yes'); 
browserRef.addEventListener ('loadstart', function(event) { add code to read the hash)} 
Смежные вопросы