2012-06-19 2 views
0

У меня возникла проблема при использовании кодов авторизации OAuth 2 в URL-адресе веб-приложения, например, возвращаемом методом OAuth Google (https://developers.google.com/ счета/документы/OAuth2Login).Обработка перезагрузок страниц с кодом доступа OAuth В URI

Я использую метод перенаправления google; где вы перенаправляете пользователя на URL-адрес Google, передавая client_id и redirect_uri. Пользователь аутентифицируется и код авторизации передается в redirect_uri как

Проблема в том, что код доступа остается в URL-адрес страницы, поэтому, если пользователь закладок или отправляет URL-адрес, они отправляют недействительный код авторизации.

Например:

http://myapp.com/?code=kACASDSDdAS81J5B8M_owCyUNgV46XdZaqBBMh4T8OJFEKPRrgN7gtiFOcMW5Fv3gk 

Что такое лучший способ справиться с этим делом? В идеале, я бы хотел отправить код авторизации в тело POST, поскольку он не отображается игроку?

Я потратил немного времени на Google App Engine (платформа, которую я использую), чтобы перенаправить пользователя, но, похоже, не может отправить тело POST в перенаправление.

ответ

0

После того, как пользователь перенаправляется на приложение с кодом авторизации в параметре URL запроса, вам необходимо:

1) Обмен кода авторизации на токен доступа, сделав Https POST к OAuth 2.0 маркера конечной точки Google, и сохранить соответствующий токен доступа (хранилище данных, memcache и т. д.)

2) Перенаправить пользователя на URL-адрес без ?code. Вы не можете отправить тело POST в перенаправление (HTTP не разрешает его), но это не обязательно, если вы храните маркер доступа доступа к серверу для создания вызовов API.

Если вы должны сделать маркер доступным на стороне клиента, вы можете:

а) Отправить его обратно, как печенье вместе с переадресацией (который выставляет его клиенту, хотя вы можете зашифровать его) ИЛИ

b) Создайте HTML-форму, с JavaScript для автоматической отправки ее вместо выполнения перенаправления. Вид уродливый, но общий.

+0

Спасибо! Это облегчает мне многое. – AndyPRA

+0

Срок действия Cookie истечет, и проблема будет такой же. Форма с autosubmit будет задавать некоторые вопросы о безопасности. –

+0

@Artem - токены доступа часто действительны только в течение часа. Плюс вы можете сохранить файл cookie как долгоживущий (лет, если хотите). Я не рекомендую отправлять маркер доступа обратно клиенту при использовании механизма кода авторизации, но это два действительных способа сделать это, если разработчик настаивает :) –

Смежные вопросы