多層アプリケーションには、さまざまなレベルでの通信が含まれます。 たとえば、ブラウザがWeb APIと通信したり、WebAPIがユーザーに代わって他のWebAPIと通信したりします。 安全な通信を可能にするために、認証および承認プロトコルは追加の処理を必要とする場合があります。
APIの使用法を変更すると、許可されたアクセスに関連するロジックが変更されるため、メンテナンスはほとんど不可能です。 その結果、特に対処する場合、テストと展開のボトルネックが発生します。 マイクロサービス.
この問題を軽減するには、 セキュリティトークンサービス (STS)は、アプリケーションのさまざまなコンポーネントに分散された承認ロジックをオフロードできる中央リポジトリを提供します。 主に、STSは、リソースへのスコープ付きアクセスの問題を解決するために、トークンの発行とクレームの検証を担当します。
下の図を見て、使用されているセキュリティトークンサービスの全体像を把握しましょう。
アイデンティティサーバー4 で頻繁に使用されるSTSです .NET Core OpenID接続およびOAuth2.0プロトコルを実装するアプリケーション。 下の図を見て、使用されているセキュリティトークンサービスの全体像を把握しましょう。
NCache 詳細 NCache IdentityServer4を使用 キャッシュキーとデータの概要
IdentityServerと NCache
IdentityServer4 APIは、リレーショナルデータベースであれ、外部のカスタムストレージを使用する柔軟性を提供します。 NoSQL ソリューション、ファイルシステム、または次のようなメモリ内データストア NCache。 そのために、IdentityServer4の作成者は実装しています Entity Framework(EF)コア IdentityServer4のサポートにより、IdentityServer4のストレージメディアとして任意のデータベースを非常に簡単に使用できます。 構成および運用データ.
NCache、分散型でスケーラブルなメモリ内 キーバリューストア、IdentityServer4に最適です。 IdentityServerでは、次のいずれかの方法で使用できます。
- NCache はとして使用することができます IdentityServer4のキャッシュストア 構成および運用データにより、メモリ内キャッシュを通じて運用を高速化し、データベースのヒットを削減します。
- NCache はとして使用することができます 構成と永続的な付与ストア ディスクからデータを取得する必要があるというボトルネックを取り除くことで、パフォーマンスをさらに向上させます。 その後、キャッシュのメモリ内の内容を定期的にディスクに永続化できるため、データの取得にかかる平均時間が大幅に短縮されます。
のキャッシュとストアの役割を組み合わせて使用することもできます NCache たとえば、構成ストアのキャッシュレイヤーとして、および運用データのスタンドアロンストアとして使用します。 これはすべて、IIdentityServerBuilderを使用して実装されます NCache ASP中に使用される拡張メソッド.NET Core 依存性注入。
- 構成ストア: 静的データが保持され、そのように変更されないストア。
- オペレーショナルストア: 操作が実行される操作データが保持され、頻繁に変更される可能性が高いストア。
その利点は、データストアをメモリ内に配置できることです。これにより、より優れた、より高速な結果が得られます。 それがどのように行われるかについてゆっくりと掘り下げてみましょうが、始める前に注意しなければならないいくつかの前提条件があります。
NCache 詳細 NCache IdentityServer4を使用 キャッシュキーとデータの概要
前提条件
- .NET Core 3.0および3.1SDK とランタイム。
- NCache Enterprise 5.0 SP1 またはサーバー上で実行されている以降。
- Job Status ページの下部にある GitHubソリューション 使用されているアプリケーションに関する情報を取得します。 ブログ全体を通して、コードの変更は同じアプリケーションに従って説明されています。
シナリオ1: NCache インメモリIdentityServer4ストアとして
クライアント、APIリソース、IDリソースなど(構成)、および/または永続化された許可やデバイスフローコードなど(操作)に関する情報を、使用中に保存できます。 NCache IdentityServerストアとして.
さて、どこを見てみましょう NCache 写真に収まる:
使用するために NCache 構成および運用データの場合:
ステップ1: cs プロジェクトの、を追加します.UseStartupNCache>() メソッドを使用して、次のコードをに追加します スタートアップNcache.cs ファイルにソフトウェアを指定する必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); var builder = services.AddIdentityServer() .AddTestUsers(TestUsers.Users) .AddNCacheConfigurationStore(options => { options.CacheId = _configuration["CacheId"]; var serverList = _configuration["Servers"].Split(',') .Select(x => x.Trim()) .ToList() .Select(y => new NCacheServerInfo(y, 9800)) .ToList(); options.ConnectionOptions = new NCacheConnectionOptions { ServerList = serverList, EnableClientLogs = true, LogLevel = NCacheLogLevel.Debug }; }) //.. rest of the code } |
ステップ2: アプリ設定.json ファイル、の値を変更します キャッシュ ID 使用しているキャッシュの名前のキー。 さらに、複数の場合 サーバー キーには、に属するXNUMXつ以上のIPアドレスのコンマ区切りリストを使用します NCache を構成するサーバー NCache クラスタ。
1 2 3 4 |
{ "CacheId": "democache", "Servers": "20.200.20.45,20.200.20.50", } |
ステップ3: アプリケーションを実行する IdentityServer、MvcClient、Api、JavaScriptClient どうやって見るか NCache 構成ストアと運用ストアの両方として使用されるデモンストレーションキャッシュが実行されており、IdentityServerサンプルアプリケーションに接続できることを確認した後、IdentityServer4構成および運用ストアとして動作します。
シナリオ2: NCache IdentityServer4キャッシュ実装として
NCacheのコア機能は、データソースに保持されているデータをキャッシュして、アクセスを高速化し、パフォーマンスを向上させることです。 あなたが使用できる間 NCache データストアとして、次を使用することもできます NCache 構成や運用データをキャッシュすることにより、データストアとアプリケーションの間で NCache データストアにも保存します。
図にその方法を示しましょう NCache IdentityServer4でキャッシュとして機能します。
ステップ1: 実装するために NCache 構成ストアとして、構成データと運用データをデータストアに保持しながら、次のように追加します。 UseStartup>() メソッドを使用して、次のコードをに追加します スタートアップEFCore.cs ファイルにソフトウェアを指定する必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
public void ConfigureServices(IServiceCollection services) { ... var builder = services.AddIdentityServer() .AddTestUsers(TestUsers.Users) .AddNCacheCaching(options => { options.CacheId = _configuration["CacheId"]; var serverList = _configuration["Servers"].Split(',') .Select(x => x.Trim()) .ToList() .Select(y => new NCacheServerInfo(y, 9800)) .ToList(); options.ConnectionOptions = new NCacheConnectionOptions { ServerList = serverList }; options.DurationOfBreakInSeconds = 120; }); //.. rest of the code } |
ステップ2: アプリ設定.json ファイル、の値を変更します キャッシュ ID 使用するキャッシュの名前のキー。 さらに、複数の場合 サーバー キーには、に属するXNUMXつ以上のIPアドレスのコンマ区切りリストを使用します NCache を構成するサーバー NCache 集まる。 また、SQLServerの接続文字列を指定します。
1 2 3 4 5 6 7 8 |
{ "CacheId": "democache", "Servers": "20.200.20.45,20.200.20.50", "ConnectionStrings": { "db": "server=;database=IdentityServer4.EntityFramework;UserId=userid;Password=password;" } } |
ステップ3: アプリケーションを実行する IdentityServer、MvcClient、Api、JavaScriptClient どうやって見るか NCache 構成ストア、永続化された許可ストア、およびIProfileServiceのデフォルト実装のキャッシュメカニズムとして機能します。 構成ストアおよび永続化された許可ストアキャッシュとして使用されるキャッシュが実行されており、に接続できることを確認してください。 アイデンティティサーバー サンプルアプリケーション。
まとめ
要約すると、IdentityServerは、アプリケーションの各ネットワークホップで必要なすべての認証を実行し、 NCache より高速なアクセスのために構成および操作データを保持するためにうまく適合します。 それだけではありません NCache データストアとしても使用でき、両方の種類のデータをメモリ内に保存できるため、アプリケーションから他のデータソースを自由に削除できます。 によって提供される拡張メソッドを使用して、これらすべてを取得します NCache 非常に簡単に。
NCache 詳細 ダウンロード NCache エディションの比較