web-dev-qa-db-ja.com

ConfigurationManagerの使用方法は? (Microsoft.IdentityModel.Protocols)

最近、別の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が期待する引数を誰かに教えてもらえますか

7
Jeppe

ConfigurationManagerをバージョン> = 5.1.4の_System.IdentityModel.Tokens.Jwt_ NuGetパッケージで機能させるには、2番目の引数としてOpenIdConnectConfigurationRetriever()を追加する必要があることがわかりました。

ConfigurationManagerの正しい呼び出しは次のとおりです。

_ConfigurationManager<OpenIdConnectConfiguration> configManager = new ConfigurationManager<OpenIdConnectConfiguration>(stsDiscoveryEndpoint, new OpenIdConnectConfigurationRetriever());
_
12
Jeppe

実行する内容に応じて、次のようにコードを変更して構成リトリーバーを呼び出すことができます。

        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
                }
        });
2
Diego Mendes