LINUX.ORG.RU

Хитрожопая авторизация в чужом сервисе

 


0

1

Веб приложение должно открыть ссылку в новом окне браузера, подождать, пока пользователь там поковыряется, а потом забрать url редиректа с этого окошка и прихлопнуть окно. На крайняк можно использовать Selenium, но он слишком толст для такой простой задачи. Каким образом это лучше реализовать?

★★★★★

HtmlUnit? Но он тоже очень толстый...
Посмотри какие запросы туда отправляются - и попробуй их сам отправлять, без окошка.

kovrik ★★★★★
()
Ответ на: комментарий от kovrik

Нужно именно дать пользователю ввести аутентификационные данные в окошко с тем ресурсом. Конечно, можно сделать по другому, даже незаметно для пользователя, но не тот случай.

f1xmAn ★★★★★
() автор топика

OAuth2? :) Читай доку как сервис предлагает это делать. У гугла например несколько вариантов, один из них - в заголовке браузера стоит токен.

зы хехе, про oauth2 угадал :)

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 2)
Ответ на: комментарий от Dron

Для этого не нужен редирект. :-)

f1xmAn ★★★★★
() автор топика
Ответ на: комментарий от invy

Ну конечно я читал доку. Описанный вверху способ является единственным официальным методом авторизации.

f1xmAn ★★★★★
() автор топика
Ответ на: комментарий от f1xmAn

А, у тебя же вэб приложение, я слово вэб проглядел, у меня было installed приложения :) там 3 метода было: юзер ручками вводит токен, в тайтлбаре браузера и на localhost в качестве запроса.

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 2)

Веб приложение должно открыть ссылку в новом окне браузера

не надо ничего в новом окне открывать, открывай в том же.

подождать, пока пользователь там поковыряется, а потом забрать url редиректа с этого окошка и прихлопнуть окно.

Ничего ждать не надо. У тебя в параметры oauth2 передается redirect_uri. По этому redirect_uri провайдер oauth2 тебя перекинет, а в доп параметрах запроса должен быть code. И на обработчике забирай code, а потом на серверной части получай token и стучись в api, которые тебе нужны.

Еще раз по шагам:

1) пользователь жмякает на ссыль http://aouth2provider.org/authorize?client_id=1&...&redirect_uri=http... (там где троеточие - служебные параметры, которые в мане конкретного провайдера смотрятся)

2) пользователь переходит куда-то на страницу провайдера и нажимает кнопку «Разрешить продать меня в рабство приложению yoursite»

3) Провайдер редиректит на твой redirect_uri.

4) Твоё веб-приложение внезапно получает запрос по адресу http://yoursite.com/oauth2redir?code=100500

5) Ты у себя обрабатываешь запрос, выдергиваешь код, а дальше на сервере уже делаешь запрос к провайдеру, дабы code в токен превратить. Приходит тебе обычно JSON с токеном и его всякими параметрами.

6) Все, токен у тебя есть, дергай api.

Раз у тебя веб-приложение, все инструменты для вытаскивания параметров из запросов, посылания запросов, парсинга JSON у тебя должны уже быть

RedPossum ★★★★★
()
Ответ на: комментарий от RedPossum

А, черт, забыл про эту фичу oauth 2.0, вопрос снимается. Спасибо.

f1xmAn ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.