Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 授权Dynamics 365业务中心API_C#_Azure Active Directory_Dynamics Business Central - Fatal编程技术网

C# 授权Dynamics 365业务中心API

C# 授权Dynamics 365业务中心API,c#,azure-active-directory,dynamics-business-central,C#,Azure Active Directory,Dynamics Business Central,我想创建一个按计划运行的Webjob。webjob的目的基本上是检查一些数据库表,如果表中有新条目,则在Dynamics 365 BC中相应地创建项。在设计实现所有这些的方法时,第一步是对API进行身份验证,这样我们就可以进行POST调用。该文档指定了具有各自身份验证机制的不同API端点,即通过Azure Active Directory(需要对Dynamics Business Central API进行委托的权限的应用程序注册)或基本身份验证。我知道,我们可以通过以下方式使用客户端id和密码

我想创建一个按计划运行的Webjob。webjob的目的基本上是检查一些数据库表,如果表中有新条目,则在Dynamics 365 BC中相应地创建项。在设计实现所有这些的方法时,第一步是对API进行身份验证,这样我们就可以进行
POST
调用。该文档指定了具有各自身份验证机制的不同API端点,即通过Azure Active Directory(需要对Dynamics Business Central API进行
委托的
权限的应用程序注册)或基本身份验证。我知道,我们可以通过以下方式使用客户端id和密码从Azure active directory获取访问令牌:

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文档以支持此场景。但是,在探索API端点
https://api.businesscentral.dynamics.com/v1.0//api/beta/companies
使用邮递员和基本身份验证,我面临以下错误:

{
    "error": {
        "code": "Authentication_InvalidCredentials",
        "message": "The server has rejected the client credentials.  CorrelationId:  641ea3fd-19d6-4402-8e68-a70145eb6da3."
    }
}
虽然我已经为我的business central用户生成了webservice访问密钥,并将其与用户名一起用于基本身份验证。我确信我正在复制正确的webservice密钥。
我们将非常感谢您的帮助。

Dynamics 365 BC支持的身份验证方法仅包括以下两个选项:

  • 基础认证
  • AAD认证
基本身份验证用于无用户交互,而AAD身份验证用于用户交互

因此,在您的场景中,AAD身份验证已被排除,唯一的选择是基础身份验证,这是仅针对应用程序权限的

虽然不建议使用基本身份验证,但您必须使用它来满足当前的要求


根据Dynamics 365 Business Central Forum,@Stefano Demiliani表示,基本身份验证可以在生产环境中使用,这取决于您的选择。

Dynamics 365 BC支持的身份验证方法仅基于以下两个选项:

  • 基础认证
  • AAD认证
基本身份验证用于无用户交互,而AAD身份验证用于用户交互

因此,在您的场景中,AAD身份验证已被排除,唯一的选择是基础身份验证,这是仅针对应用程序权限的

虽然不建议使用基本身份验证,但您必须使用它来满足当前的要求


根据Dynamics 365 Business Central Forum,@Stefano Demiliani说过,基本身份验证可以在生产环境中使用,这取决于您的选择。

您好,您有机会查看我的答案吗?这有帮助吗?嗨,你有机会检查我的答案吗?这有帮助吗?嗨,艾伦,很抱歉反应太晚,请检查我更新的问题,如果可以的话请回答。@MuhammadMuradHaider你的租户版本是什么?这篇文章有用吗?你好,艾伦,很抱歉回复太晚,请检查我更新的问题,如果可以的话请回复。@MuhammadMuradHaider你的租户版本是什么?这篇文章有用吗?