デプロイ

あなたのアイデンティティサーバーがあるだけ IdentityServerミドルウェアを含む、標準的なASP.NET Coreアプリケーション。まずパブリッシュとデプロイメントに関する公式Microsoftのドキュメントをお読みください。

典型的なアーキテクチャ

通常、高可用性のためにIdentityServerの配備を設計します。

../_images/deployment.png

IdentityServer自体はステートレスなので、サーバの親和性は必要ありませんが、インスタンス間で共有する必要があるデータがあります。

設定データ

これには、通常、

  • リソース
  • クライアント
  • スタートアップ設定、例えばキーマテリアル、外部プロバイダ設定など

そのデータを格納する方法は、使用環境によって異なります。構成データがほとんど変更されない状況では、メモリ内のストアとコードまたは構成ファイルを使用することをお勧めします。

高度に動的な環境(Saasなど)では、データベースまたは構成サービスを使用して構成を動的にロードすることを推奨します。

IdentityServerは、コード構成と構成ファイル(ここを参照)をそのまま使用できます。データベースの場合は、Entity Framework Coreベースのデータベースをサポートします。

また、実装することで独自の構成ストアを構築することができますIResourceStoreし、IClientStore。

鍵素材

スタートアップコンフィギュレーションのもう一つの重要な部分は、キーマテリアルです。キーマテリアルと暗号の詳細については、ここを参照してください。

運用データ

特定の操作では、IdentityServerに状態を保存するための永続ストアが必要です。これには次のものがあります。

  • 承認コードを発行する
  • 参照およびリフレッシュトークンの発行
  • 同意書を保管する

運用データの保存に従来のデータベースを使用することも、Redisのような永続性機能を備えたキャッシュを使用することもできます。上記のEFコア実装は、運用データもサポートしています。

またIPersistedGrantStore、デフォルトでIdentityServerがメモリ内バージョンをインジェクトするように実装することで、独自のカスタムストレージメカニズムのサポートを実装することもできます。

ASP.NET Coreデータ保護

ASP.NET Core自体には、クッキー、状態文字列などの機密データを保護するための共有キーマテリアルが必要です。 ここの 公式ドキュメントを参照してください。

上記の永続ストアの1つを再利用するか、可能であれば共有ファイルのような単純なものを使用することができます。