为什么我使用Azure AD帐户在Azure AD B2C中有两个登录弹出窗口?

时间:2018-05-22 13:36:38

标签: c# azure-active-directory azure-ad-b2c msal

我创建了Web应用程序(Angular 5 + MSAL + ASP.NET Core)并将其连接到Azure AD B2C。签名时我需要自定义流程,所以我必须使用自定义策略。 Auth工作正常。然后我不得不添加另一个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引发错误,但令牌已保存到本地存储,因此刷新后可以正常工作。 (错误:拒绝在一个框架中显示&#39; http ...&#39;因为它设置了“X-Frame-Options&#39; to deny&#39 ;.”

为什么会有这样的想法呢?

0 个答案:

没有答案
相关问题