🔖

.NET Core 2.x 以上で認証つくろうとするときは IdentityModel.Tokensの名前空間に注意

2020/10/30に公開

TL;DR

.NET Core 2.x 以上で認証つくろうとするときに
MSDNで System.IdentityModel.Tokens 配下になっているクラスを使おうとしても存在しない。
Microsoft.IdentityModel.Tokens に引っ越ししているのでこちらを使う
インターネット上の資料を参考に実装するときは記述が .NET Core 1.x 系前提だったりして記述が違うことがあるので注意すること。

顛末

JWT Authentication を実装していて SigningCredentials を使おうとしたら
System.IdentityModel.Tokens 配下になかった。
以下は .NET Framework 4.8 の解説だが
メニューから .NET Core 2.2 を選びなおしてもこちらへリダイレクトされている
SigningCredentials Class - MSDN

色々調べていたら以下の Stackoverflow 投稿がひっかかった。
どうやら .NET Core 2.x 系の System.IdentityModel.Tokens.Jwt ver 5.0.0以降は
System.IdentityModel.Tokens ではなく
Microsoft.IdentityModel.Tokens に依存しているとのこと。
Conflict between System.IdentityModel.Tokens and Microsoft.IdentityModel.Tokens - stackoverflow

Discussion