Почему у меня есть два всплывающих окна входа в Azure AD B2C с использованием учетной записи Azure AD? - PullRequest
0 голосов
/ 22 мая 2018

Я создал веб-приложение (Angular 5 + MSAL + ASP.NET Core) и подключил его к Azure AD B2C.Мне нужны были пользовательские потоки при подписании, поэтому я должен использовать пользовательскую политику.Аут работает отлично.Затем мне пришлось добавить другого поставщика Azure AD.Дело в том, что пользователи из AAD и ADD B2C подписывают с разным поведением.

в общем код выглядит следующим образом:

this.clientApplication = new UserAgentApplication(
  environment.auth.clientId,
  environment.auth.loginAuthority,
  this.authCallback.bind(this),
  {
    validateAuthority: false,
    cacheLocation: 'localStorage',
    logger: logger
  }
);

...

public login(): void {
  return this.clientApplication.loginRedirect(environment.auth.scopes);
}

...

public getAccessTokenAsync(): Promise<string> {
  return this.clientApplication.acquireTokenSilent(environment.auth.scopes)
    .then((accessToken: string) => {
      return accessToken;
    })
    .catch((silentError: object) => {
      return this.clientApplication.acquireTokenPopup(environment.auth.scopes)
        .then((accessToken: string) => Promise.resolve(accessToken))
        .catch((popupError: object) => {
          return Promise.resolve('');
        });
    });
}

Сначала я использую login, а когда происходит http-вызов, яиспользуйте getAccessTokenAsync.

Пользователи из B2C перенаправлены с входа в систему, а acquireTokenSilent возвращает токен доступа.

Пользователи из AD перенаправляются с входа в систему, и acquireTokenPopup выдает ошибку, но токен сохраняетсяв локальное хранилище, поэтому после обновления все работает.(Ошибка: отказано отображать «http ...» в кадре, поскольку для параметра «X-Frame-Options» установлено значение «deny».)

Есть идеи, почему это работает?

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