WebAuthn Relaying Party ID для различных настроек

У меня есть проект Angular 11, который реализует регистрацию в WebAuthn. Бэкэнд - SpringBoot 2.4.

WebAuthn Login должен работать в двух частях проекта, основной и просмотрщик. Настройка домена довольно сложна:

Главный проект

URL-адреса

Просмотр проекта

URL-адреса

Код

environment.ts

prodUrls: ['company-project.com'],
webauthn: {
  name: "Company DEV",
  rpId: "localhost"
}

environment.prod.ts (заменить в сборке)

prodUrls: ['company-project.com'],
webauthn: {
  name: "Company Prod",
  rpId: "plattform.intra.company.com" // gets overridden by values in "prodUrls"
}

webauthn.service.ts

private _getRelyingPartyInfo(): RelyingParty {

  let rpId = environment.webauthn.rpId;

  /**
   * Check if the Hostname matches one of our Prod Hostnames
   * and use this instead
   */
  environment.prodUrls.forEach((url, index) => {
    if (location.hostname.indexOf(url) > -1) {
      rpId = environment.prodUrls[index];
    }
  });

  const rp = {
    id: rpId,
    name: environment.webauthn.name
  };

  return rp;
}

Проблемы

  • Он работает локально, используя rpId localhost (локально как Backend, так и Frontend)
  • НЕ работает на постановке - ›Backend throws

Сообщение WebAuthnException: rpIdHash не соответствует хешу предварительно настроенного rpId.

  • Он должен работать на Prod, используя company-project.com в качестве rpId (боюсь развернуть, так как он не работает на стадии)

Что я пробовал

Для постановки я изменил rpId на develop.plattform.intra.company.com, и я могу зарегистрироваться и войти в систему в main. Вход в программу просмотра также вызывает ошибку.

В спецификации не очень конкретно указано, что должно работать: https://www.w3.org/TR/webauthn/#relying-party-identifier, он говорит только о том, что не должно работать. Я предполагаю, что несколько поддоменов усложняют постановку?

Каким будет правильный rpId для постановки и правильно ли предположение, что company-project.com as rpId должен работать на продукте?


person PrimuS    schedule 02.02.2021    source источник


Ответы (1)


Для постановки я изменил rpId на develop.plattform.intra.company.com, и я могу зарегистрироваться и войти в систему в main. Вход в программу просмотра также вызывает ошибку.

Какой у вас код, чтобы получить утверждение? Вы также можете столкнуться с этим другим вопросом. Вам необходимо установить идентификатор RP получения утверждения на тот же идентификатор RP, который использовался для регистрации. Если вы этого не сделаете, по умолчанию будет использоваться источник, который для вашего поддомена будет другим.

person Nina Satragno    schedule 18.02.2021