Azure Active Directory B2 C с паспортом. js ошибка «Не удается получить метаданные федерации» - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь внедрить аутентификацию на стороне клиента для моего Node.js веб-приложения с использованием Passport. js и Azure Active Directory B2 C с помощью стратегии OpenID Connect.

Я следовал инструкциям README на официальной странице GitHub и изучал исходный код официальных примеров приложений, но они кажутся неполными и / или устаревшими, как согласовано различными темами в Интернете.

После объединения различных советов со всего Интернета я пересек много мостов, но зашел в тупик со следующей ошибкой:

cannot get AAD Federation metadata from endpoint you specified.

Существует тонна Конфигурация требуется для аутентификации AAD, поэтому я отмечу некоторые важные значения:

  • policyName: Это b2c_1_signin, как я настроил на портале Azure.
  • identityMetadata: я использую конечную точку специалиста c, v2.0. Я добавил ?p=b2c_1_signin для ввода имени политики.
  • responseType: id_token
  • redirectUrl: Это мой локальный хост и порт, настроенные в Azure. allowHttpForRedirectUrl установлено на true. (Это работает для непродовольственных сред.)
  • isB2C: true

1 Ответ

4 голосов
/ 05 февраля 2020

Для B2 C необходимо установить validateIssuer: false. Для необычной конечной точки мы используем издателя из метаданных, возвращаемых из AAD, для B2 C, passport.authenticate не может получить значение issuer из метаданных. Для B2 C в паспорте используется TenantId для обработки проверки, так что это должно быть предоставлено, что будет частью identityMetadata.

Кроме того, identityMetadata должен иметь следующий формат:

identityMetadata: "https://" + b2cDomainHost + "/" + tenantIdGuid + "/" + policyName + "/v2.0/.well-known/openid-configuration/"

Я не думаю, что для обработки этого формата для URL-адреса метаданных установлен паспорт - > ?p=b2c_1_signin

Вы можете попробовать этот node.js образец и использовать свои собственные значения, которые вызовут в паспорт. js библиотека.

Пример :

var clientID = "93733604-cc77-4a3c-a604-87084dd55348";
var b2cDomainHost = "fabrikamb2c.b2clogin.com";
var tenantIdGuid = "775527ff-9a37-4307-8b3d-cc311f58d925";
var policyName = "B2C_1_SUSI";
var options = {
    identityMetadata: "https://" + b2cDomainHost + "/" + tenantIdGuid + "/" + policyName + "/v2.0/.well-known/openid-configuration/",

    clientID: clientID,
    policyName: policyName,
    isB2C: true,
    validateIssuer: false,
    loggingLevel: 'info',
    loggingNoPII: false,
    passReqToCallback: false
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...