我想创建一个应该按计划运行的 Webjob。Webjob 的目的基本上是检查一些数据库表,如果表中有新条目,则相应地在 Dynamics 365 BC 中创建项目。在设计实现所有这些的方法时,第一步是对 API 进行身份验证,以便我们可以进行POST
调用。此处的文档指定了具有各自身份验证机制的不同 API 端点,即通过 Azure Active Directory(需要具有Dynamics Business Central API 权限的应用程序注册Delegated
)或基本身份验证。我知道,我们可以通过以下方式使用客户端 ID 和机密从 Azure 活动目录获取访问令牌:
ClientCredential clientCredential = new ClientCredential(clientId, clientSecret);
var authenticationContext = new AuthenticationContext(authorityUri, true);
AuthenticationResult authenticationResult = authenticationContext.AcquireTokenAsync(resource, clientCredential).GetAwaiter().GetResult();
accessToken = authenticationResult.AccessToken;
现在,由于我的 Web 作业需要在没有任何用户交互的情况下在后端运行,因此 Azure AD 身份验证不适合这里,因为它需要用户交互才能同意。而基本身份验证不建议用于生产场景。
请建议应该如何生成访问令牌,以便它不需要用户交互。
编辑
根据 Allen 的回复,基本身份验证可用于此场景,但需要更新 Microsoft 文档以支持此场景。但是,在https://api.businesscentral.dynamics.com/v1.0/<mydomain.com>/api/beta/companies
使用 Postman 和基本身份验证探索 API 端点时,我遇到了以下错误:
{
"error": {
"code": "Authentication_InvalidCredentials",
"message": "The server has rejected the client credentials. CorrelationId: 641ea3fd-19d6-4402-8e68-a70145eb6da3."
}
}
虽然我为我的业务中心用户生成了 Web 服务访问密钥,并将其与用户名一起用于基本身份验证。我确信我正在复制正确的网络服务密钥。任何帮助将不胜感激。