azure-activedirectory-identitymodel-extensions-for-dotnet icon indicating copy to clipboard operation
azure-activedirectory-identitymodel-extensions-for-dotnet copied to clipboard

ConfigurationManager GetConfigurationAsync is often slow

Open jsweiler opened this issue 3 months ago • 4 comments

Which version of Microsoft.IdentityModel are you using? Note that to get help, you need to run the latest version. Microsoft.IdentityModel.Protocols 7.5.2

Where is the issue?

  • [x ] M.IM.Protocols.OpenIdConnect

Is this a new or an existing app? This is a new app or an experiment.

Repro

var wellKnownUri = "https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration";
var configurationManager = new ConfigurationManager<OpenIdConnectConfiguration>(
    wellKnownUri, new OpenIdConnectConfigurationRetriever());
var openIdConfig = await configurationManager.GetConfigurationAsync();

Expected behavior I would expect the call to GetConfigurationAsync() to be very fast.

Actual behavior The call to GetConfigurationAsync() often takes 500ms or greater.

Additional context / logs / screenshots / links to code As this code is handling a large amount of requests from Microsoft Graph presence updates we need to be able to quickly process notifications and this one call is too slow. Part of processing the notification is validating the token that comes along with the request. This code is running in an Azure Linux Function App running on .net 8 isolated mode. I notice the issue in Azure or as well running locally from my machine with Visual Studio. I notice it hits https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration and https://login.microsoftonline.com/common/discovery/v2.0/keys and I can see with Fiddler that those endpoints return very quickly (less than 5 milliseconds each).

When I first started this app I was using version 7.2.0 of the package and upgraded to 7.5.2 and the performance was a little better but there still are cases of it being slow.

jsweiler avatar May 17 '24 17:05 jsweiler