ValidationError: «tenantId» не допускается при использовании AzureAD для авторизации JS-маршрута hapi - PullRequest
2 голосов
/ 23 сентября 2019

Мы пытаемся использовать @ hapi / bell на наших внутренних маршрутах для предоставления авторизации.Стратегия аутентификации использует azure в качестве поставщика, а схема - bell

. Так я регистрирую стратегию.clientId, clientSecret, tenantId и password скрыты по понятным причинам

server.auth.strategy('azureAD', 'bell', { provider: 'azure', clientId: '...', clientSecret: '...', tenantId: '...', password: '...', providerParams: { response_type: 'code' }, scope: ['openid', 'offline_access', 'profile', 'User.Read'] })

Когда я запускаю сервер, я получаю следующую ошибку:

{ [ValidationError: "tenantId" is not allowed] ...

Теперь, заглядывая на портал Azure, мы определенно хотим поддерживать учетные записи только внутри организации, т.е. с одним арендатором.

Если я удалю tenantIdПри выборе опции и перезапуске сервера я получаю сообщение об ошибке CORS, которое, по сути, говорит о том, что наше приложение не настроено как мультитенантное приложение, и нам необходимо использовать конечную точку, специфичную для арендатора, или настроить приложение на мультитенантность.Однако добавление tenantId говорит о том, что это запрещено.

Будем весьма признательны за любые указания относительно того, почему это происходит.

1 Ответ

1 голос
/ 24 сентября 2019

Я обнаружил, что вместо регистрации стратегии, как я показал в вопросе, можно сделать следующее:

const custom = Bell.providers.azure({ tenant: '...' })

server.auth.strategy('azureAD', 'bell', {
  provider: custom,
  clientId: '...',
  clientSecret: '...',
  password: '...',
  isSecure: false, // look into this, not a good idea but required if not using HTTPS
  providerParams: {
    response_type: 'code'
  },
  scope: ['openid', 'offline_access', 'profile', 'User.Read']
})

Это избавляет от ошибки "tenantId", которая не допускается, однако мытеперь получим другую ошибку, сообщающую Authentication failed due to: Missing custom request token cookie.

Белл предполагает, что распространенным решением является объединение звонка с плагином схемы аутентификации hapi-auth-cookie , так что теперь это то, что нужно посмотретьв.

...