How to use ConfigurationManager? (Microsoft.IdentityModel.Protocols)

Jeppe picture Jeppe · Aug 4, 2017 · Viewed 9.8k times · Source

I was recently forced to update my System.IdentityModel.Tokens.Jwt NuGet package to 5.1.4 because of another NuGet package. Most of the code after changes seem easy enough to solve, but now ConfigurationManager<OpenIdConnectConfiguration>() takes two arguments instead of one! I can not find any example of how to use this new version of the Configuration manager!

I use it as part of this code:

string stsDiscoveryEndpoint = string.Format("{0}/.well-known/openid-configuration", authority);

ConfigurationManager<OpenIdConnectConfiguration> configManager = new ConfigurationManager<OpenIdConnectConfiguration>(stsDiscoveryEndpoint, IConfigurationRetriever<>);

OpenIdConnectConfiguration config = await configManager.GetConfigurationAsync();
_issuer = config.Issuer;
_signingTokens = config.SigningTokens.ToList();

_stsMetadataRetrievalTime = DateTime.UtcNow;

Can anyone let me know what arguments ConfigurationManager expects

Answer

Jeppe picture Jeppe · Aug 7, 2017

I found that in order to make ConfigurationManager work with version >=5.1.4 of the System.IdentityModel.Tokens.Jwt NuGet package you have to add OpenIdConnectConfigurationRetriever() as the second argument.

The correct invocation of ConfigurationManager is then:

ConfigurationManager<OpenIdConnectConfiguration> configManager = new ConfigurationManager<OpenIdConnectConfiguration>(stsDiscoveryEndpoint, new OpenIdConnectConfigurationRetriever());