我试图用身份验证详细信息建立到业务中心服务的连接,但它给了我一个错误。然而当我在邮递员上测试它时,它工作得很完美。
using System.Net.Http;
using System.Net.Http.Headers;
using Microsoft.Identity.Client;
private void BusinessCentral()
{
string TenantId = "...";
string ClientId = "...";
string ClientSecret = "...";
string CallbackUrl = @"https://businesscentral.dynamics.com/";
string GetUrl = string.Format(@"https://api.businesscentral.dynamics.com/v2.0/{0}/Production/api/v2.0/companies", TenantId);
try
{
string[] Scopes = new[] { "https://api.businesscentral.dynamics.com/.default" };
var App = ConfidentialClientApplicationBuilder
.Create(ClientId)
.WithClientSecret(ClientSecret)
.WithRedirectUri(CallbackUrl)
.WithTenantId(TenantId)
.Build();
var result = App.AcquireTokenForClient(Scopes).ExecuteAsync().Result;
if (result != null)
{
HttpClient HttpCli = new HttpClient();
var defaultRequestHeaders = HttpCli.DefaultRequestHeaders;
if (defaultRequestHeaders.Accept == null || !defaultRequestHeaders.Accept.Any(m => m.MediaType == "application/json"))
{
HttpCli.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}
defaultRequestHeaders.Add("Authorization", result.CreateAuthorizationHeader());
HttpResponseMessage response = HttpCli.GetAsync(GetUrl).Result;
if (response.IsSuccessStatusCode)
{
string json = response.Content.ReadAsStringAsync().Result;
var apiResult = JsonConvert.DeserializeObject<List<JObject>>(json);
}
else
{
string content = response.Content.ReadAsStringAsync().Result;
// ERROR: "code": "Authentication_InvalidCredentials", "message":"The server has rejected the client credentials.
}
}
}
catch (Exception ex)
{
}
}
代码是正确的,问题是关于权限的业务中心配置。
我没有权限访问该配置,因此我不能给出详细信息。
我需要在JavaScript中访问Azure密钥库中的一些秘密值。它是普通的JavaScript,没有NPM和节点。有没有直接从JavaScript获取值的选项?或者我需要编写一个单独的API来检索密钥库。这与保护某些ID无关,我想知道是否有任何可能的选项从客户端获取密钥库值。 我希望这是在简单的JavaScript。
我正在尝试各种Azure功能,目前希望从KeyVault检索一个秘密。 直截了当地说: 我正在使用这个nuget包与我的azure资源进行交互。 我开发了一个简单的。NET核心控制台应用程序,并在本地运行。 我有一个密钥库资源,其中定义了一个处于活动状态且未过期的秘密。 我在AAD中注册了一个应用程序,因此我的本地出货。NET Core控制台应用程序在AAD中具有标识。 然后我在AAD的注册应用程
我们计划将主动 MQ (STOMP) 用于我们的一个项目。其中一个要求是,如果我们发现用户不合适,就将其踢出/禁止。如何通过单板技术实现这一点?有点像在 IRC 中踢球的东西。
我使用。NET Core2.0和ASP.NET Core2.0进行应用程序开发。“测试”应用程序是一个。NET核心控制台应用程序。我正在编写的核心代码是一个类库。一旦适当的测试。我选择这样做是因为我暂时不会使用它(它正在替换旧的ASPNET代码)。 无论如何,由于我必须处理各种服务的大量API密钥,所以我决定使用Microsoft Azure Key Vault来存储密钥。我有这一切设置,并理解这