Я сталкиваюсь с проблемой при попытке вызвать API вниз по течению, обеспеченную Azure Entra из приложения ASP.net Core 9 Web API, работающего на службе Azure Kubernetes (AKS). The Microsoft.Identity.Web package, specifically the AddDownstreamApi and Managed Identity features, appears to be failing to acquire a token, resulting in an "HttpStatusCode: NotFound" error from the Managed Identity endpoint.
Error message
The exception handler configured На ExceptionHandlerOptions дал ответ 404 статуса. Это InvalidoperationException, содержащее исходное исключение, было брошено, поскольку это часто происходит из -за неправильного исключения HandlingPath. Если обработчик исключений, ожидается, вернет 404 ответов на статус, установите AlluctStatusCode404Response на TRUE. IDW10109: Никакие учетные данные не могут быть загружены. Это может произойти, когда сертификаты, передаваемые в конфигурацию, истекли или не могут быть загружены, а код не работает на Azure, чтобы иметь возможность использовать управляемую идентичность, идентификацию стручков и т. Д.Program.cs:
builder
.AddConfiguration(applicationName);
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd"))
.EnableTokenAcquisitionToCallDownstreamApi()
.AddDownstreamApi("SecureApi", builder.Configuration.GetSection("SecureApi"))
.AddInMemoryTokenCaches();
var app = builder.Build();
app.UseServices();
await app.Initialize();
app.Run();
< /code>
appsettings.json:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"ClientId": "Caller Application's managed Identity Client Id",
"TenantId": "My Tenant Id",
"ClientCredentials": [
{
"SourceType": "SignedAssertionFromManagedIdentity",
"ManagedIdentityClientId": "Caller Application's managed Identity Client Id"
}
]
},
"SecureApi": {
"BaseUrl": "base url"
"Scopes": [ "api://Secure API Client Id/.default" ]
},
}
< /code>
Controller code:
[HttpGet]
[Route("CallSecureAPI")]
public async Task CallSecureAPI()
{
var response = await _downstreamApi.CallApiForAppAsync("SecureApi", options =>
{
options.RelativePath = "Controller/Get";
options.HttpMethod = HttpMethod.Get.ToString();
});
return Ok(response);
}
< /code>
Microsoft.Identity.Web version: 4.72.1
Web API - protected web APIs call downstream web APIs
When I try the following, the token is generated and API is called without any issue, so the Azure Entra and managed identity is setup correctly.
var _httpClient = new HttpClient();
var _apiScope = "api://scure api client Id/.default";
var _apiUrl = "url"
var credential = new DefaultAzureCredential();
var token = await credential.GetTokenAsync(new TokenRequestContext(new[] { _apiScope }));
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Token);
var response = await _httpClient.GetAsync(_apiUrl);
Подробнее здесь: https://stackoverflow.com/questions/796 ... pplication
Отказ получения токенов с приложением API вниз по течению - .NET 9 AKS ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Parallelflux - параллельное выполнение с несколькими вызовами API вниз по течению
Anonymous » » в форуме JAVA - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-