Как остановить цикл перезагрузки после входа на пользовательскую страницу Azure AD B2C? - PullRequest
1 голос
/ 08 апреля 2019

Я настраиваю приложение без сервера Angular 7 для работы, которое использует Azure AD B2C с настраиваемым экраном входа в систему.Цель этого приложения - позволить пользователям входить в систему через B2C внутри нашего приложения, а затем направлять их на другие страницы приложения в зависимости от ролей.Я могу войти в систему успешно и перенаправлен в /index.html (правильное поведение), но страница индекса постоянно перезагружается с новыми значениями состояния и токена, предотвращая щелчок по любой части веб-страницы из-за обновления.Любые идеи о том, что попытаться остановить это освежение?

Я попытался установить параметры входа в систему, используя документ обнаружения, проверяя действительные токены.Я изменил свой URI перенаправления и реализовал / не реализовал свою собственную маршрутизацию много раз.Я также рассмотрел проблемы перезагрузки websocket-dev-server и не верю, что именно в этом заключается моя ошибка.Честно говоря, я попробовал почти все опции, связанные с этой проблемой, здесь и на github.

Использование чего-либо с документом обнаружения приводит к сообщению 404 not found в отношении /.well-known/openid-configuration.Другие варианты, которые я пробовал, не изменили результат.

Я использую неявный поток.У меня установлен подписанный сертификат.Результаты идентичны при работе на локальном хосте и при работе на конечной точке Azure.В настоящее время я не использую пути маршрутизации для пользователя root (те же результаты, что и у меня).

app.component.ts

constructor(private oauthService: OAuthService) {
    this.configureWithNewApiConfig();
}

private configureWithNewApiConfig() {  
    this.configureAuth();
    this.oauthService.setStorage(sessionStorage);
    this.oauthService.tokenValidationHandler = new JwksValidationHandler();
    this.oauthService.initImplicitFlow();
 }

private configureAuth(): void {
this.oauthService.configure( {
      clientId: '9c3276bb-22c3-429f-a456-fcfcef3254d0',
      redirectUri: 'https://<url>storagedev.z13.web.core.windows.net/index.html',
      loginUrl: 'https://<url>.b2clogin.com/<url>.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1_localaccount_signin',
      logoutUrl: 'https://<url>.b2clogin.com/<url>.onmicrosoft.com/oauth2/v2.0/logout?p=b2c_1_localaccount_signin',
      scope: 'openid https://<url>.onmicrosoft.com/<api-name>/user_impersonation',
      oidc: true,
      issuer: 'https://<url>.b2clogin.com/ab735adf-d58c-4607-b749-2c78ab372df4/v2.0/',
      tokenEndpoint: 'https://<url>.b2clogin.com/<url>.onmicrosoft.com/oauth2/v2.0/token?p=b2c_1_localaccount_signin',
      responseType: 'id_token token',
      clearHashAfterLogin: true,
      disableAtHashCheck: true,
      showDebugInformation: true,
      strictDiscoveryDocumentValidation: false, 
      jwks: {
        keys: [
          {
            "kid":"X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk",
            "nbf":1493763266,
            "use":"sig",
            "kty":"RSA",
            "e":"AQAB",
            "n":"tVKUtcx_n9rt5afY_2WFNvU6PlFMggCatsZ3l4RjKxH0jgdLq6CScb0P3ZGXYbPzXvmmLiWZizpb-h0qup5jznOvOr-Dhw9908584BSgC83YacjWNqEK3urxhyE2jWjwRm2N95WGgb5mzE5XmZIvkvyXnn7X8dvgFPF5QwIngGsDG8LyHuJWlaDhr_EPLMW4wHvH0zZCuRMARIJmmqiMy3VD4ftq4nS5s8vJL0pVSrkuNojtokp84AtkADCDU_BUhrc2sIgfnvZ03koCQRoZmWiHu86SuJZYkDFstVTVSR0hiXudFlfQ2rOhPlpObmku68lXw-7V-P7jwrQRFfQVXw"
          }
        ]
      },     
    });
  }

Ожидаемые результаты: после входа в систему пользователь долженбыть в состоянии остаться на странице индекса без цикла перезагрузки.

Fiddler не показывает никаких ошибок, а просмотр консоли в Chrome просто показывает итерацию того, сколько раз страница была перемещена.Результаты одинаковы для Firefox, Chrome и IE.

Вполне возможно, что это может быть что-то несвязанное, что я упускаю из виду.Это мое первое приложение Angular такого размера, которое мне нужно сделать.

1 Ответ

0 голосов
/ 09 апреля 2019

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

...