【发布时间】:2019-11-19 12:42:00
【问题描述】:
我们正在尝试在我们的后端路由上使用@hapi/bell 来提供授权。认证策略使用azure作为provider,方案为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 表示不允许。
任何关于为什么会发生这种情况的指导都将受到高度赞赏。
【问题讨论】:
-
我不熟悉 hapijs,但我对 js 本身很熟悉,它们被认为是公共应用程序。这意味着不需要客户端机密(因为它将暴露给世界,为黑客打开一扇巨大的大门)。也许this doc 可以帮助你。
-
“在我们的后端路由上”它是一个机密客户端。
-
@TiagoBrenck 如果我删除了客户端密码,服务器不会运行并抛出一个错误,指出需要客户端密码。
-
@juunas 不太清楚你的意思,你能详细说明一下吗?
-
我在回答 TiagoBrenck 的评论,即您不应该将客户端机密放在公共客户端中。根据我在您的问题中的理解,您的代码在后端运行,因此是一个机密客户端,它可以使用客户端密码来验证自己。
标签: azure azure-active-directory hapijs