У меня есть веб-API ASP.NET Core, который я разрабатываю локально. Он использует две разные схемы аутентификации, обе схемы носителя JWT: одна предназначена для «пользовательских» токенов (выпущенных моим собственным поставщиком удостоверений), а другая — для «служебных» токенов, выданных моим клиентом Azure. Я добавлю ниже код, чтобы показать настройку этих схем, но я не делаю ничего необычного.
Совсем недавно я обнаружил, что мои защищенные конечные точки внезапно стали работать очень медленно. отвечать в моей локальной среде разработки — время отклика порядка 60 секунд. Я обнаружил, что это справедливо только для конечных точек, которым требуются токены службы. Например, конечная точка, которая принимает токены пользователя или службы и вызывается с помощью токена пользователя, нормально реагирует, когда требование токена службы удаляется.
Кроме того, если я поставлю точку останова в какое-то промежуточное программное обеспечение, которое запускается до аутентификации, затем эта точка останова достигается быстро, а затем огромная задержка до достижения точки останова в самом контроллере.
Итак, я пришел к выводу, что что-то внутри промежуточного программного обеспечения аутентификации носителя JWT вызывает приложение зависает. Но я понятия не имею, что это может быть. Я пробовал использовать Fiddler для проверки внутреннего сетевого трафика, создаваемого моим приложением (netsh winhttp set proxy 127.0.0.1:8888), но там нет ничего особенно долгосрочного. Ниже приведен след. Здесь выделяется одна вещь: отсутствие каких-либо запросов к известному документу обнаружения клиента Azure. Первые два запроса относятся к моему собственному документу обнаружения токенов пользователей. Все остальное, похоже, связано с App Insights.
# Result Protocol Host URL Body Caching Content-Type Process Comments Custom
12 200 HTTPS my.identity.local:44119 /.well-known/openid-configuration 2,104 application/json; charset=UTF-8 identity.app:800
13 200 HTTPS my.identity.local:44119 /.well-known/openid-configuration/jwks 463 application/json; charset=UTF-8 identity.app:800
17 200 HTTP www.msftconnecttest.com /connecttest.txt 22 max-age=30, must-revalidate text/plain svchost:3132
18 502 HTTP ipv6.msftconnecttest.com /connecttest.txt 512 no-cache, must-revalidate text/html; charset=UTF-8 svchost:3132
24 200 HTTPS fe2cr.update.microsoft.com /v6/ClientWebService/client.asmx 2,155 private text/xml; charset=utf-8 svchost:8068
34 502 HTTP ipv6.msftconnecttest.com /connecttest.txt 512 no-cache, must-revalidate text/html; charset=UTF-8 svchost:3132
35 200 HTTP www.msftconnecttest.com /connecttest.txt 22 max-age=30, must-revalidate text/plain svchost:3132
47 200 HTTPS fe2cr.update.microsoft.com /v6/ClientWebService/client.asmx 2,149 private text/xml; charset=utf-8 svchost:8068
Я также пытался подключиться к событиям носителя JWT. Для схемы службы выполняются только два запроса: MessageReceived (очень быстро) и AuthenticationFailed (после длительной задержки и, как и ожидалось, поскольку используемый токен не является токеном службы), поэтому никаких подсказок здесь нет. .
Трудно поверить, что такая огромная задержка связана с процессором, но я действительно не знаю, что еще я могу сделать для расследования. Кто-нибудь из вас сталкивался с этим раньше? Любые советы были бы замечательными, потому что очень неприятно иметь такую безумно медленную среду разработки. Как я уже сказал, это началось только последние пару дней, и я почти не прикасался к кодовой базе API. Возможно ли, что на меня распространяется какое-то ограничение скорости Azure? У меня есть платная учетная запись Azure. Как и было обещано, вот метод расширения, который я использую для настройки этой схемы аутентификации:
private static void AddServiceTokenAuthenticationIfRequired(this AuthenticationBuilder authBuilder, IServiceCollection services, AuthenticationSettings settings)
{
if (!settings.SupportServiceTokens)
{
return;
}
services.AddSingleton();
var tenantId = settings.TenantId ?? throw new Exception("Token tenant not configured");
var authority = $"https://sts.windows.net/{tenantId}";
var audience = settings.DefaultTokenAudience ?? throw new Exception("Token audience not configured");
authBuilder.AddJwtBearer(AuthenticationSchemes.Service, options =>
{
options.Audience = audience;
options.Authority = new Uri(authority).AbsoluteUri;
options.TokenValidationParameters.NameClaimType = JwtClaimTypes.Subject;
options.TokenValidationParameters.ValidateIssuer = true;
options.TokenValidationParameters.ValidIssuers = [$"{authority}/"];
options.TokenValidationParameters.ValidateAudience = true;
options.TokenValidationParameters.ValidateIssuerSigningKey = true;
options.TokenValidationParameters.ValidateLifetime = true;
options.TokenValidationParameters.LogValidationExceptions = true;
options.EventsType = typeof(CustomServiceAuthenticationEvents);
options.MapInboundClaims = false;
});
}
Подробнее здесь: https://stackoverflow.com/questions/788 ... ment-envir
Промежуточное программное обеспечение аутентификации Microsoft внезапно стало чрезвычайно медленным в среде разработки ⇐ C#
Место общения программистов C#
1722781733
Anonymous
У меня есть веб-API ASP.NET Core, который я разрабатываю локально. Он использует две разные схемы аутентификации, обе схемы носителя JWT: одна предназначена для «пользовательских» токенов (выпущенных моим собственным поставщиком удостоверений), а другая — для «служебных» токенов, выданных моим клиентом Azure. Я добавлю ниже код, чтобы показать настройку этих схем, но я не делаю ничего необычного.
Совсем недавно я обнаружил, что мои защищенные конечные точки внезапно стали работать очень медленно. отвечать в моей локальной среде разработки — время отклика порядка 60 секунд. Я обнаружил, что это справедливо только для конечных точек, которым требуются токены службы. Например, конечная точка, которая принимает токены пользователя или службы и вызывается с помощью токена пользователя, нормально реагирует, когда требование токена службы удаляется.
Кроме того, если я поставлю точку останова в какое-то промежуточное программное обеспечение, которое запускается до аутентификации, затем эта точка останова достигается быстро, а затем огромная задержка до достижения точки останова в самом контроллере.
Итак, я пришел к выводу, что что-то внутри промежуточного программного обеспечения аутентификации носителя JWT вызывает приложение зависает. Но я понятия не имею, что это может быть. Я пробовал использовать Fiddler для проверки внутреннего сетевого трафика, создаваемого моим приложением (netsh winhttp set proxy 127.0.0.1:8888), но там нет ничего особенно долгосрочного. Ниже приведен след. Здесь выделяется одна вещь: отсутствие каких-либо запросов к известному документу обнаружения клиента Azure. Первые два запроса относятся к моему собственному документу обнаружения токенов пользователей. Все остальное, похоже, связано с App Insights.
# Result Protocol Host URL Body Caching Content-Type Process Comments Custom
12 200 HTTPS my.identity.local:44119 /.well-known/openid-configuration 2,104 application/json; charset=UTF-8 identity.app:800
13 200 HTTPS my.identity.local:44119 /.well-known/openid-configuration/jwks 463 application/json; charset=UTF-8 identity.app:800
17 200 HTTP www.msftconnecttest.com /connecttest.txt 22 max-age=30, must-revalidate text/plain svchost:3132
18 502 HTTP ipv6.msftconnecttest.com /connecttest.txt 512 no-cache, must-revalidate text/html; charset=UTF-8 svchost:3132
24 200 HTTPS fe2cr.update.microsoft.com /v6/ClientWebService/client.asmx 2,155 private text/xml; charset=utf-8 svchost:8068
34 502 HTTP ipv6.msftconnecttest.com /connecttest.txt 512 no-cache, must-revalidate text/html; charset=UTF-8 svchost:3132
35 200 HTTP www.msftconnecttest.com /connecttest.txt 22 max-age=30, must-revalidate text/plain svchost:3132
47 200 HTTPS fe2cr.update.microsoft.com /v6/ClientWebService/client.asmx 2,149 private text/xml; charset=utf-8 svchost:8068
Я также пытался подключиться к событиям носителя JWT. Для схемы службы выполняются только два запроса: MessageReceived (очень быстро) и AuthenticationFailed (после длительной задержки и, как и ожидалось, поскольку используемый токен не является токеном службы), поэтому никаких подсказок здесь нет. .
Трудно поверить, что такая огромная задержка связана с процессором, но я действительно не знаю, что еще я могу сделать для расследования. Кто-нибудь из вас сталкивался с этим раньше? Любые советы были бы замечательными, потому что очень неприятно иметь такую безумно медленную среду разработки. Как я уже сказал, это началось только последние пару дней, и я почти не прикасался к кодовой базе API. Возможно ли, что на меня распространяется какое-то ограничение скорости Azure? У меня есть платная учетная запись Azure. Как и было обещано, вот метод расширения, который я использую для настройки этой схемы аутентификации:
private static void AddServiceTokenAuthenticationIfRequired(this AuthenticationBuilder authBuilder, IServiceCollection services, AuthenticationSettings settings)
{
if (!settings.SupportServiceTokens)
{
return;
}
services.AddSingleton();
var tenantId = settings.TenantId ?? throw new Exception("Token tenant not configured");
var authority = $"https://sts.windows.net/{tenantId}";
var audience = settings.DefaultTokenAudience ?? throw new Exception("Token audience not configured");
authBuilder.AddJwtBearer(AuthenticationSchemes.Service, options =>
{
options.Audience = audience;
options.Authority = new Uri(authority).AbsoluteUri;
options.TokenValidationParameters.NameClaimType = JwtClaimTypes.Subject;
options.TokenValidationParameters.ValidateIssuer = true;
options.TokenValidationParameters.ValidIssuers = [$"{authority}/"];
options.TokenValidationParameters.ValidateAudience = true;
options.TokenValidationParameters.ValidateIssuerSigningKey = true;
options.TokenValidationParameters.ValidateLifetime = true;
options.TokenValidationParameters.LogValidationExceptions = true;
options.EventsType = typeof(CustomServiceAuthenticationEvents);
options.MapInboundClaims = false;
});
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78830659/microsoft-authentication-middleware-suddenly-extremely-slow-in-development-envir[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия