ValidationError: "tenantId" is not allowed when using AzureAD for hapi JS route authorization
ValidationError: "tenantId" is not allowed when using AzureAD for hapi JS route authorization
我们正在尝试在后端路由上使用@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
表示不允许。
任何关于为什么会发生这种情况的指导将不胜感激。
我发现可以执行以下操作,而不是像我在问题中显示的那样注册策略:
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"
is not allowed 错误,但是,我们现在得到一个不同的错误,指出 Authentication failed due to: Missing custom request token cookie
。
Bell 建议一个常见的解决方案是将 bell 与 hapi-auth-cookie 身份验证方案插件结合使用,所以现在需要研究一下。
Joi 包正在验证架构并抛出错误。请参阅下面的配置 属性。它会覆盖选项并避免出现 "tenantId" or "tenant" is not allowed 错误。此外,在最近的版本中,Bell Azure Provider 希望 "tenant" 而不是 "tenantId" 属性.
server.auth.strategy('azureAD', 'bell', {
provider: 'azure',
config: {
tenant: '...',
useParamsAuth: false,
},
clientId: '...',
clientSecret: '...',
password: '...',
providerParams: {
response_type: 'code'
},
scope: ['openid', 'offline_access', 'profile', 'User.Read'],
isSecure: false,
})
我们正在尝试在后端路由上使用@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
表示不允许。
任何关于为什么会发生这种情况的指导将不胜感激。
我发现可以执行以下操作,而不是像我在问题中显示的那样注册策略:
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"
is not allowed 错误,但是,我们现在得到一个不同的错误,指出 Authentication failed due to: Missing custom request token cookie
。
Bell 建议一个常见的解决方案是将 bell 与 hapi-auth-cookie 身份验证方案插件结合使用,所以现在需要研究一下。
Joi 包正在验证架构并抛出错误。请参阅下面的配置 属性。它会覆盖选项并避免出现 "tenantId" or "tenant" is not allowed 错误。此外,在最近的版本中,Bell Azure Provider 希望 "tenant" 而不是 "tenantId" 属性.
server.auth.strategy('azureAD', 'bell', {
provider: 'azure',
config: {
tenant: '...',
useParamsAuth: false,
},
clientId: '...',
clientSecret: '...',
password: '...',
providerParams: {
response_type: 'code'
},
scope: ['openid', 'offline_access', 'profile', 'User.Read'],
isSecure: false,
})