web-dev-qa-db-ja.com

IdentityServer3クライアントで重大な変更を引き起こすSystem.IdentityModel.Tokens.Jwtの更新

うまくいけば、簡単に解決できます。

Microsoftの_System.IdentityModels.Tokens.Jwt_パッケージがNuGetで昨日_4.0.2.206211351_から_v5.0_に更新されました。残念ながら、これはいくつかの「標準」の_IdentityServer3_コードで重大な変更を引き起こしています。つまり、コードサンプルから取得したので、今後数日でかなりの数の開発者がこの問題を目にする可能性があります。

元のコード

パッケージのv4.0.2.xxxxxxバージョンを使用します。私が持っています

_using System.IdentityModel.Tokens;
_

名前空間内。

次に、Configurationメソッドで次のように始まります。

_public void Configuration(IAppBuilder app)
    {
        AntiForgeryConfig.UniqueClaimTypeIdentifier = "sub";

        JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>();

        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = "Cookies"
        });

        app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
        { ... };
_

更新後

構成行を更新した後:

_JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>();
_

問題が発生しています。

最初に、クラスが_System.IdentityModel.Tokens.Jwt_名前空間に移動したようですが、これは解決するのにそれほど悪くありません。

ただし、_Object reference required for a non-static field_で_JwtSecurityTokenHandler.InboundClaimTypeMap_エラーが発生します。

ここに何か不足していますか、別のライブラリが必要ですか、またはStartup.Configuration()が呼び出される前に発生する何かが必要ですか?

26
Ross Halliday

あなたが医者に行き、「私がこれをするときはいつも痛いです」と言うとき-医者は「それからこれをやめる」と答えます;)

v4-> v5は、定義上、重大な変更です。 v5が必要ですか?

言われていること-単純なインテリセンスの探査は彼らがInboundClaimTypeMapDefaultInboundClaimTypeMapに改名したことを思い起こさせただろう。

途中でさらに重大な変更に備えてください。

31
leastprivilege

OWINでのアクセストークンの検証は、system.identitymodel v5と互換性がありません-v4にダウングレードする必要があります- ここの問題を参照

1
Todd Hirsh