最近、別のNuGetパッケージが原因で、System.IdentityModel.Tokens.JwtNuGetパッケージを5.1.4に更新する必要がありました。変更後のコードのほとんどは簡単に解決できるように見えますが、ConfigurationManager<OpenIdConnectConfiguration>()
は1つではなく2つの引数を取ります!この新しいバージョンの構成マネージャーの使用方法の例が見つかりません。
私はそれをこのコードの一部として使用します:
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;
ConfigurationManager
が期待する引数を誰かに教えてもらえますか
ConfigurationManager
をバージョン> = 5.1.4の_System.IdentityModel.Tokens.Jwt
_ NuGetパッケージで機能させるには、2番目の引数としてOpenIdConnectConfigurationRetriever()
を追加する必要があることがわかりました。
ConfigurationManager
の正しい呼び出しは次のとおりです。
_ConfigurationManager<OpenIdConnectConfiguration> configManager = new ConfigurationManager<OpenIdConnectConfiguration>(stsDiscoveryEndpoint, new OpenIdConnectConfigurationRetriever());
_
実行する内容に応じて、次のようにコードを変更して構成リトリーバーを呼び出すことができます。
string issuerEndpoint = "https://my.auth.server";
var openidConfiguration = await OpenIdConnectConfigurationRetriever.GetAsync(
$"{issuerEndpoint}/.well-known/openid-configuration", CancellationToken.None);
app.UseJwtBearerAuthentication(
new Microsoft.Owin.Security.Jwt.JwtBearerAuthenticationOptions()
{
TokenValidationParameters =
new TokenValidationParameters
{
ValidIssuer = openidConfiguration.Issuer,
ValidateAudience = false,
IssuerSigningKeys = openidConfiguration.SigningKeys,
IssuerSigningTokens = openidConfiguration.SigningTokens
}
});