Azure Form Recognizer调用费用转由客户Azure订阅支付可行性问询
完全可行,核心逻辑是让你的API调用Form Recognizer时,使用客户提供的Azure AD身份凭据而非你自己订阅的密钥,将费用直接计入客户的Azure订阅。具体实现步骤如下:
要求客户配置Azure权限
客户需在自己的Azure订阅中,为你的API服务主体(或客户自身的应用/用户身份)授予Form Recognizer相关权限——至少需要Cognitive Services Form Recognizer Data Reader和Cognitive Services Form Recognizer Data Writer,也可直接使用Cognitive Services Contributor权限。同时客户要提供他们的Form Recognizer资源端点(每个订阅的资源端点是独立的)。API验证客户的OAuth令牌
客户调用你的API时,必须在请求中携带针对Azure Cognitive Services的OAuth访问令牌(令牌受众需设为https://cognitiveservices.azure.com/)。你的API要先验证令牌有效性:检查发行方、受众、过期时间,确认是来自客户合法的Azure AD租户。用客户令牌调用Form Recognizer
在你的.NET 6 API的Recognize方法中,不再使用自身订阅的API密钥,而是将客户的令牌放入请求头的Authorization: Bearer {token}字段,调用客户提供的Form Recognizer端点。这样每一次调用的费用都会直接计入客户的Azure订阅账单。添加安全防护措施
- 可要求客户提前将其Azure租户ID、Form Recognizer资源ID注册到你的系统,API调用时验证令牌的租户ID是否匹配,防止滥用。
- 为API设置调用频率限制,避免客户的订阅因异常调用产生超额费用。
额外注意:客户的Form Recognizer资源必须处于已部署状态,最好和你的API部署在同一区域以降低延迟。另外OAuth令牌有效期通常为1小时,客户需自行负责令牌刷新,你也可提供临时令牌代理服务(需额外处理权限逻辑)。
内容的提问来源于stack exchange,提问作者Milan Blažek

