Можно ли установить URI обнаружения для получения токена в Microsoft.Identity.Web?
У меня есть приложение .NET5, которое использует Microsoft.Identity.Web для безопасного API. При попытке получить токен доступа:
var accessToken = await _tokenAcquisition.GetAccessTokenForAppAsync(scopesToAccessDownstreamApi);
Первое, что происходит, - это запрос к конечной точке обнаружения:
https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=.......%2Fauthorize
У меня есть статические полномочия, указанные в моей конфигурации, которые, как я думал, следует использовать вместо этого. Для моего приложения Blazor он работает нормально. MS.Identity.Web сначала получает мою ключевую информацию в мои полномочия:
https://myCustomAuthority/myTenantId/oauth2/v2.0/.well-known/openid-configuration
Однако с tokenAcquisition он всегда вызывает login.microsoft.com, терпит неудачу и, наконец, перенаправляет на мою конечную точку.
Копаясь в кодах MS.Identity.Web и MS.Identity.Client, они определенно имели это в виду.
/// Allows developers to configure their own valid authorities. A json string similar to https://aka.ms/aad-instance-discovery should be provided.
public InstanceDiscoveryResponse CustomInstanceDiscoveryMetadata { get; set; }
public Uri CustomInstanceDiscoveryMetadataUri { get; set; }
Но я не могу найти его на стороне API. И когда я смотрю на TokenAquisition, он вызывает ConfidentialClientApplicationBuilder.CreateWithApplicationOptions
var builder = ConfidentialClientApplicationBuilder
.CreateWithApplicationOptions(_applicationOptions)
.WithHttpClientFactory(_httpClientFactory);
Затем создается новый ConfidentialClientApplicationBuilder с пустым объектом ApplicationConfiguration, поэтому CustomInstanceDiscovery всегда имеет значение null
var config = new ApplicationConfiguration();
var builder = new ConfidentialClientApplicationBuilder(config).WithOptions(options);
Кажется, что все хуки есть, поэтому я чувствую, что мне не хватает какой-то конфигурации, но это также может быть запрос функции / ошибки.
1 ответ
Это был фактический дефект, исправленный командой Microsoft.Identity.Web. Я задал тот же вопрос команде:https://github.com/AzureAD/microsoft-identity-web/discussions/1202 .
И они создали проблему:https://github.com/AzureAD/microsoft-identity-web/issues/1212 .
Итак, это было исправлено в сборке 1.13.