使用 Terraform 在 Azure AD 应用注册中的应用程序 ID URI 引发错误

Posted

技术标签:

【中文标题】使用 Terraform 在 Azure AD 应用注册中的应用程序 ID URI 引发错误【英文标题】:Application ID URI Throwing Error in Azure AD App Registration using Terraform 【发布时间】:2022-01-04 04:39:25 【问题描述】:

我有一个网络应用程序和相应的应用程序注册。几个月前,在应用程序注册的“公开 API”部分,我能够添加我的网络应用程序的 URI,即“https://app-coalsa-api.azurewebsites.net” 现在,当我尝试使用 Terraform 对具有类似环境的另一个项目执行相同操作时,我收到了屏幕截图中所附的错误。 任何想法是否由于新的 Azure AD 提供程序而出现此错误,理想情况下应在应用注册中的“公开 API”中出现什么@

【问题讨论】:

【参考方案1】:

会不会是这个应用注册配置为多租户?

多租户应用注册要求具有使用 Azure AD 租户中已验证域之一的应用 ID URI。

由于azurewebsites.net 由 Microsoft 管理,因此它不可能是您租户的经过验证的域,这可以解释更新失败的原因。

见下文:

对于多租户应用程序,它必须是全局唯一的,以便 Azure AD 可以跨所有租户找到该应用程序。 通过要求 App ID URI 具有与 Azure AD 租户的已验证域匹配的主机名来强制执行全局唯一性。

来自https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant#update-registration-to-be-multi-tenant。

【讨论】:

【参考方案2】:

看起来答案在错误消息中。您可以更新 Expose An API 中的值,可能的值是 api://object-IF-GUID 或 https://FQDN。

每当创建任何 Azure AD 应用程序注册时,它都会生成一个对象 ID,并链接谁在 Azure AD 中触发了应用程序 ID 创建。

您可以使用任何本机 azure 服务或映射到它的任何自定义域来更新值,但不能更改或映射到全新的应用程序,否则会导致失败。

我试过了,得到以下错误信息: "error":"code":"HostNameNotOnVerifiedDomain","message":"identifierUris 属性的值必须使用组织或其子域的已验证域:'https://test- rohit-app-name.azurewebsites.net'","details":["code":"HostNameNotOnVerifiedDomain","target":"identifierUris","message":"identifierUris 属性的值必须使用经过验证的域组织或其子域:'https://test-rohit-app-name.azurewebsites.net'"]

在您的方案中,接受的值为 webappname.azurewebsites.net 或映射到此 Web 应用的自定义域。

【讨论】:

以上是关于使用 Terraform 在 Azure AD 应用注册中的应用程序 ID URI 引发错误的主要内容,如果未能解决你的问题,请参考以下文章

通过 terraform 创建 Azure App 服务时抛出错误此处不应出现名为“zone_redundant”的参数

此处不应出现“azure_blob_fs_location”类型的块

如何在 Azure Pipeline 上使用 Terraform 将文件上传到 Azure 存储?

如何使用服务托管标识在 Azure 中使用 Terraform 预配资源

如何使用 Terraform 为 Azure 资源创建警报

如何在 ASP.NET Core 3 上同时使用 Azure AD 身份验证和身份?