Google App Engine: обратный прокси + OpenID, пользователи перенаправляются на домен appspot после входа в систему - PullRequest
7 голосов
/ 01 мая 2011

Я использую обратный прокси для включения ssl в настраиваемом домене.Прокси-сервер работает нормально на общедоступных страницах, однако, когда пользователь пытается получить доступ к каталогу login_required, URL-адрес входа в систему перемещает их в мой домен appspot после входа в систему.

Существует ли способ сохранить пользователей в пользовательскихdomain?

Вот мой обработчик входа:

class OpenIDLoginHandler(webapp.RequestHandler):
    def get(self):
        domain = self.request.get('domain')
        continue_url = self.request.GET.get('continue')

        if not continue_url:
            continue_url = 'https://my_domain/login_required_directory/'    

        if domain:
            self.redirect(users.create_login_url(dest_url=continue_url,
                _auth_domain=None,federated_identity=domain))
        else:               
            login_url = users.create_login_url(dest_url=continue_url,
                federated_identity='https://www.google.com/accounts/o8/id')         
            self.redirect(login_url)

application = webapp.WSGIApplication(
                     [                                       
                         ('/_ah/login_required', OpenIDLoginHandler)],
                     debug=True)    

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

Я попытался переопределить целевой URL в вызове users.create_login_url - функция все еще возвращает login_url с доменом appspot в качествеПараметр continue, например:

"https://appspot_domain/_ah/login_redir?claimid=https://www.google.com/accounts/o8/id&continue=https://appspot_domain"

Я попытался просто переписать возвращенный login_url и заменить параметр continue на мой пользовательский домен, но это привело к ошибке 404.

Есть мысли?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 17 июня 2011

Я не уверен, что это вариант для вас, но в следующем выпуске движка приложения заявлена ​​поддержка ssl в пользовательских доменах (http://code.google.com/appengine/business/). Если ваше приложение какое-то время не будет работать, возможно, оно будетпросто будет проще подождать, пока они официально не добавят поддержку. Похоже, они находятся в цикле выпуска ~ 3 месяца (http://code.google.com/appengine/docs/revision_history.html)

0 голосов
/ 21 августа 2011

вы можете справиться с этим самостоятельно в app.yaml с помощью обработчика подстановочных знаков, который перенаправляет все запросы в ssl.Если вы не хотите обрабатывать все запросы таким образом, вы можете использовать регулярные выражения, чтобы ограничить подстановочный знак.

app.yaml:

application: yourthing
version: 1
runtime: python
api_version: 1

handlers:

- url: .*
  script: redirect_to_ssl.py

Это также очищает любые запросы не httpsкоторые могут прийти от пользователей, которые набирают URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...