Cryptography, Keys and HTTPS

IdentityServerは、その仕事をするためにいくつかの暗号化メカニズムに依存しています。

トークンの署名と検証

IdentityServerには、JWTの署名と検証に非対称キーのペアが必要です。この鍵ペアは、証明書/秘密鍵の組み合わせまたは生のRSA鍵にすることができます。どんな場合でも、SHA256でRSAをサポートする必要があります。

署名鍵と対応する検証部分の読み込みは、ISigningCredentialStoreとの実装によって行われますIValidationKeysStore。キーのロードをカスタマイズする場合は、これらのインターフェイスを実装してDIで登録することができます。

DIビルダーの拡張機能には、署名と検証キーを設定する便利な方法がいくつかあります。

署名鍵のロールオーバー

一度に1つの署名キーしか使用できませんが、ディスカバリドキュメントに複数の検証キーを発行できます。キーのロールオーバーに便利です。

ロールオーバは、通常次のように動作します。

  1. 新しい鍵素材をリクエスト/作成する
  2. 現在の検証キーに加えて新しい検証キーを発行します。AddValidationKeysビルダー拡張メソッドを使用することができます。
  3. すべてのクライアントとAPIは、次回ディスカバリドキュメントのローカルコピーを更新したときに、新しいキーについて学習する機会を得ます
  4. 一定の時間(例えば24時間)後に、すべてのクライアントおよびAPIは古いキー材料および新しいキー材料の両方を受け入れるべきである
  5. あなたが好きなだけ古い鍵の素材を保管しておいてください。おそらく、検証が必要な長寿命のトークンがあります
  6. 古い鍵素材が使用されなくなった場合には廃棄する
  7. すべてのクライアントとAPIは、次にディスカバリ文書のローカルコピーを更新したときに古いキーを「忘れる」

これには、クライアントとAPIがディスカバリ文書を使用する必要があります。また、構成を定期的に更新する機能も必要です。

データ保護

ASP.NETコア(またはMVCの偽造防止)のCookie認証は、ASP.NETコアデータ保護機能を使用します。展開シナリオに応じて、追加の設定が必要な場合があります。詳細については、Microsoftのドキュメントを参照してください。

HTTPS

私たちはHTTPSの使用を強制しませんが、プロダクションではIdentityServerとのすべての対話に必須です。