Как использовать авторизацию Auth0 на iframe - PullRequest
0 голосов
/ 19 января 2020

Я только что реализовал простое приложение на основе Angular с кнопкой Войти с помощью Auth0. Это работает хорошо, когда я открываю его прямо в браузере. Я могу войти с успехом. Моя цель - встроить мое приложение в другую веб-страницу, используя iframe (как виджет).

<div class="css"><iframe src="https://myapp.com"></iframe></div>

Logi c выглядит так

login(redirectPath: string = '/') {
    this.auth0Client$.subscribe((client: Auth0Client) => {
      client.loginWithRedirect({
        redirect_uri: `https://some.now.sh`,
        appState: {target: redirectPath},
      });
    });
  }

Но затем во время логин Я получаю сообщение об ошибке

Возможно, в системе произошла неправильная конфигурация или произошел сбой в обслуживании. Мы отслеживаем эти ошибки автоматически, но если проблема сохраняется, не стесняйтесь обращаться к нам. Пожалуйста, попробуйте еще раз.

invalid_request: Возможно, вы нажали кнопку «Назад», обновили во время входа в систему, открыли слишком много диалоговых окон входа в систему или возникли проблемы с файлами cookie, поскольку мы не смогли найти ваш сеанс. Попробуйте снова войти в систему из приложения, и, если проблема не устранена, обратитесь к администратору.

На вкладке «Сеть» можно увидеть

https://mycustomname.eu.auth0.com/authorize?xxxx

Который получает 302 с местоположением

/ u / login? State = g6Fo2xxxxxxx

А затем

https://mycustomname.eu.auth0.com//u/login?state=g6Fo2xxxxxxx

Возвращается с кодом HTTP 400.

Что может быть не так? Невозможно использовать Auth0 в iframe?

1 Ответ

2 голосов
/ 20 января 2020

Если вы используете новый универсальный интерфейс входа, вы не сможете отобразить страницу размещенного входа в Iframe. Auth0 включает в себя следующие HTTP-заголовки, чтобы смягчить атаку с помощью clickjacking.

X-Frame-Options: deny
Content-Security-Policy: frame-ancestors 'none'

Эти заголовки блокируют рендеринг Iframe. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

Однако, если вы используете classi c Unviersal, вы можете отключить эту функцию, которая должна разрешить страницу размещенного входа в Iframe. Как описано здесь:

https://auth0.com/docs/migrations/guides/clickjacking-protection

...