Flask - Танец использует localhost вместо домена при перенаправлении - PullRequest
0 голосов
/ 16 января 2020

У меня есть приложение, которое использует Flask -Dance для аутентификации в Google Login. Когда я пытаюсь войти, он говорит, что я перенаправляю с 127.0.0.1:9852, где мое приложение работает на сервере, но у меня есть конфигурация apache, которая назначает имя сервера этому адресу (xxx.xxx .com)

Я зарегистрировал в консоли Google домен в авторизованных URI. Тем не менее, когда я пытаюсь получить доступ к части входа в систему, он говорит, что «URI перенаправления в запросе http://127.0.0.1: 9852 / google / авторизованный не соответствует тем, которые авторизованы для клиента OAuth».

Итак, я зарегистрировал этот адрес, и он разрешает мне войти, но когда он пытается перенаправить, он говорит, что не может найти сервер «127.0.0.1». Могу ли я в любом случае использовать свой домен в качестве фактического авторизованного URI?

Это мой план:

blueprint = make_google_blueprint(
    client_id="id",
    client_secret="secret",
    scope=['https://www.googleapis.com/auth/userinfo.profile', 'https://www.googleapis.com/auth/userinfo.email',
           'openid'],
    storage=SQLAlchemyStorage(OAuth, db.session, user=current_user),
    redirect_url='questions.view_all')

РЕДАКТИРОВАТЬ : Вот файл конфигурации Apache2:

    <VirtualHost *:80>
            ServerName xxx.xxx.com
            ServerAlias xxx.xxx.com
            ServerAdmin em@il.com
            # Redirect http to https
            RedirectMatch 301 (.*) https://xxx.xxx.com$1
    </VirtualHost>

    <VirtualHost _default_:443>
            ServerName xxx.xxx.com
            ServerAlias xxx.xxx.com
            ServerAdmin em@il.com

            #   Enable/Disable SSL for this virtual host.
            SSLEngine On
            SSLProxyEngine On

            # Web root
            ProxyPass /  http://127.0.0.1:9852/
            ProxyPassReverse /  http://127.0.0.1:9852/

            # Log configuration
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined

            # Self signed SSL Certificate file
            SSLCertificateFile      /etc/apache2/ssl/certs/cert.crt
            SSLCertificateKeyFile /etc/apache2/ssl/private/cert.key
    </VirtualHost>

1 Ответ

1 голос
/ 16 января 2020

Я зарегистрировал в своей консоли Google домен в авторизованных URI

Полный URL-адрес перенаправления должен быть зарегистрирован для клиентского приложения OAUTH в консоли Google.

Когда я пытаюсь войти в систему, он говорит, что я перенаправляю с 127.0.0.1:9852

В вашей конфигурации сервера ваше приложение обслуживается gunicorn и Apache настроен как прокси-сервер.

В некотором смысле запрос не передается на сервер gunicorn с достаточным количеством информации для werkzeug, чтобы определить правильное имя хоста .

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

...