MSAL js, AAD B2 C многофакторная аутентификация, 400 неверных запросов, слишком длинный заголовок запроса - PullRequest
2 голосов
/ 07 января 2020

MSAL js Версия: v0.2.4;
Chrome Версия: 79.0.3945.88 (Официальная сборка) (64-разрядная версия)

  1. Из различных постов Это Понятно, что из-за скопления файлов cookie мы видим «400 неверных запросов - заголовок запроса слишком длинный», но это происходит не во всех моих средах разработки. Я хотел бы знать, почему это происходит не с локальными средами (запущенными из кода VS), а в развернутых средах (Azure Служба приложений)

  2. Я могу обновить пакет MSAL до последней версии версия, но в то же время раньше она работала нормально в развернутых средах, но не сейчас, почему?

  3. Есть ли какое-либо соединение с сообщением об ошибке области (AADB2C90055) с «Bad Request - Request» слишком длинный заголовок '?

AADB2C90055: область действия' openid profile 'должна указывать ресурс

Любая информация будет полезна для меня или другие, и заранее спасибо

Вот код, используемый в моем приложении,

let userAgentApplication: Msal.UserAgentApplication;

const createAuthorityUrl = (tenantId: string, policy: string) => {
  return `https://${tenantId}.b2clogin.com/tfp/${tenantId}.onmicrosoft.com/${policy}`;
};

export const b2cLogin = (config: B2CConfig) => {
  const msalAppConfig = {
    cacheLocation: 'localStorage',
    redirectUri: `${location.protocol}//${location.host}`,
    navigateToLoginRequestUrl: false,
    storeAuthStateInCookie: true,
    validateAuthority: false,
  };

  const { clientId, tenantId, myb2cSigninPolicy, myb2cPasswordResetPolicy } = config;

  return new Promise(resolve => {
    let handlingPasswordReset = false;
    const app = new Msal.UserAgentApplication(
      clientId,
      createAuthorityUrl(tenantId, myb2cSigninPolicy),
      (errorDesc: string, token: string) => {
        if (errorDesc && errorDesc.indexOf('AADB2C90118') > -1) {
          // user forgot password
          // https://github.com/Azure-Samples/active-directory-b2c-javascript-msal-singlepageapp/issues/9#issuecomment-347556074
          handlingPasswordReset = true;
          new Msal.UserAgentApplication(
            clientId,
            createAuthorityUrl(tenantId, myb2cPasswordResetPolicy),
            () => null,
            msalAppConfig,
          ).loginRedirect();
        }        
        return resolve(token);
      },
      msalAppConfig,
    );

    if (!handlingPasswordReset) {
      userAgentApplication = app;
    }


    // Seems that MSAL's acquireTokenSilent() won't resolve if run within an iframe
    if (window.parent !== window) {
      return resolve('');
    }
    if (!userAgentApplication.isCallback(location.hash)) resolve(getAccessToken());    
  });
};

export const getAccessToken = async (): Promise<string> => {  
  if (!userAgentApplication) {
    throw new Error('getAccessToken attempted before authentication initialized');
  }
  try {
    return await userAgentApplication.acquireTokenSilent(['openid']);
  } catch (error) {
    console.log(error);
    return '';
  }
};

1 Ответ

0 голосов
/ 08 января 2020

Ошибка HTTP 400: размер запроса заголовка обычно слишком длинный, потому что слишком много файлов cookie или файлов cookie слишком большого размера .

ссылка:

Azure Портал: неверный запрос - слишком длинный запрос

...