我有一个 Azure Web 应用服务,将在服务到服务环境中使用。我希望此服务使用 Azure AD 应用注册进行身份验证。由于此服务的实现,它仅使用客户端凭据授予类型进行身份验证过程。
我预计,由于我的客户端应用程序注册没有针对我的服务应用程序注册配置任何 API 权限,因此身份验证应该会失败,但事实并非如此;它返回一个有效的访问令牌,其中我的服务应用程序注册Application ID URI
作为受众,可用于访问我的 Azure 应用服务。
那么,为什么会发生这种情况?我预计,只有为我的客户端注册配置了经过批准的 API 权限后,应用程序注册才可用,但事实并非如此。
这是我所做的:
我按照以下方式创建了一个应用程序注册以使其正常工作:
- 使用 Azure AD 手动进行应用注册
Supported account types
设置Accounts in this organizational directory only
- 添加了
Application ID URI
- 添加了客户端机密(由 Azure 应用服务配置使用)
- 创建了一个应用程序角色(因为据我所知,这是使用客户端凭据授予类型的要求)
然后,使用高级配置将此应用程序注册使用应用程序服务上的配置连接到 Web 应用程序服务Authentication / Authorization
(这与此问题无关)。
我还创建了另一个应用程序注册来标识我的客户服务。此服务具有不是已配置为访问服务应用程序注册。然后,我使用此客户端服务凭据通过以服务Application ID URI
为范围的客户端凭据授予类型对我的 Azure AD 进行身份验证。
我知道我可以通过检查角色来限制代码中的访问,但这不是这里的问题,我想知道为什么它会以我的服务Application ID URI
作为受众返回有效的访问令牌。
注意:我发现如果我进入企业应用程序并设置User assignment required?
为“是”,它将返回 400,但是有没有办法将其作为所有新应用程序注册的默认设置,以简化应用程序注册?