Java アーキテクチャ - SpringCloud 分散アーキテクチャ 権限管理

Java アーキテクチャ - SpringCloud 分散アーキテクチャ 権限管理

概要

この記事では、分散アーキテクチャの権限管理の 2 つの状況、つまり統合認証アクセスとクロスプラットフォーム インターフェイス アクセスについて説明します。

[[271166]]

分散アーキテクチャでは、ビジネスが独立したサブビジネスまたはサブプラットフォームに分割されますが、多くの場合、同じプラットフォーム上で統合された認証とシングル サインオンが行われます。クライアントにとってはプラットフォーム全体がひとつとなり、統一された認可アクセス権限管理となります。ただし、複数のプラットフォームが連携する状況が発生する場合があります。この場合、他のプラットフォームのアーキテクチャを考慮する必要はありません。それらに接続するためのデータ インターフェースを提供するだけで済みます。この場合、クロスプラットフォーム インターフェース アクセスの権限管理を考慮する必要があります。

1. 統合認証アクセス

フロントエンドでは、nginx や haproxy などの Web サーバーを使用します。第 1 層のリバース プロキシとして Nginx が使用され、第 2 層のリバース プロキシとして zuul が使用されます。 2 層リバース プロキシは、基本的に一般的なネットワーク侵入やクローラーに簡単に対処できます。この前提の下で、インターフェース認証やアクセスセキュリティなどの問題に対処し、クライアントとサーバーの両方でセキュリティ制御を実行する必要があります。


1. ユーザーはユーザー名とパスワードを使用してログイン要求を開始します。認証コード、SMS認証、WeChat認証などを使用することでセキュリティレベルを向上させることができます。ログインリクエストは許可センターのZUULにアクセスします。

2. ZUULから権限センターのSERVICEへのリバースプロキシ。

3. ユーザーとロールの情報を照会し、クエリのマッチングを実行します。

4. クエリ結果が得られると、ユーザーのステータス、ユーザー、役割、権限情報などのフィードバックが提供されます。

5. TOKEN を生成します。 TOKEN アルゴリズムは自分で記述する必要があります。暗号化のためにタイムスタンプやその他の情報を追加することをお勧めします。 SESSION に保存するか、REDIS に直接保存します。分散アーキテクチャで SESSION を共有するには、SESSION 共有プールが必要であるため、通常は SESSION に保存することをお勧めします。 SESSION の共有プールは一般的に REDIS で行われ、SESSION は SESSIONID を使用して一意のユーザーを確認できるため、より便利です。

6. ユーザー、ロール、および権限情報をクライアントに返します。

7. ブラウザクライアントは、取得したユーザー、ロール、権限情報を通じてフロントエンド機能とメニューをレンダリングし、許可されていない機能を隠し、この情報に基づいてフロントエンド検証を実行できます。ただし、この検証はクライアント側で行われるため、改ざんされやすいという欠点があります。基本的な保護しか実行できませんが、必要です。

8. ブラウザ クライアントはサーバーにビジネス リクエストを送信します。リクエストには、クライアント メニューまたは機能の権限情報が付随します。サーバーは、ZUUL インターセプターを介してビジネス リクエストをインターセプトし、SESSION 共有プールにアクセスします。

9. 次に、SESSIONID を通じて TOKEN 情報を取得し、TOKEN アルゴリズムを通じて復号化し、ユーザー、ロール、および権限情報を取得します。

10. 一致チェックを実行して、この要求にインターフェイス アクセス権があるかどうかを確認します。チェックに合格すると、インターフェースにアクセスできます。チェックに失敗した場合、インターフェースにアクセスできません。

2. クロスプラットフォームインターフェースアクセス

ここでのインターフェースは、Web サービスに似たクロスプラットフォーム インターフェース サービスを指します。シングル サインオンや統合認証はありません。他のプラットフォームが当社のプラットフォームとリモートでやり取りするためによく使用されます。これら 2 つのプラットフォームは、多くの場合同じ会社または部門のものではないため、インターフェースは長期使用向けではなく、一定の時間制限があります。


1. ユーザー管理者は、外部クライアント ユーザーとその権限情報を設定します。

2. ユーザーデータベースにユーザー情報と権限情報を追加します。

3. 外部クライアントインターフェースにトークンがない場合は、まず権限センターに承認要求を送信する必要があります。

4. 権限センターは、外部クライアントユーザーが設定されているかどうかを確認し、ユーザーの権限情報を取得します。検証に合格すると、暗号化アルゴリズムを通じてトークンが生成されます。ここでのトークンは実際の状況によって異なります。セキュリティ要件が高い場合は、タイムスタンプを追加してトークンを期限切れにして無効にし、相手側が再度リクエストできるようにするのが最適です。

5. TOKEN を REDIS に保存して、TOKEN 共有プールを形成します。ここにはブラウザの SESSIONID がないので、それを SESSION に保存してもあまり意味がありません。

6. TOKENをクライアントに返します。

7. クライアントはトークンを取得した後、サービス インターフェイス アドレスにサービス要求を送信します。

8. ビジネス インターフェイスは ZUUL を介してリクエストをインターセプトし、TOKEN を REDIS TOKEN と比較します。

9. 比較が成功したら、トークンを復号化し、インターフェース認証があるかどうかを確認します。

10. インターフェースが承認されている場合、アクセスが許可されます。そうでない場合、アクセスは許可されません。

Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo の高同時実行性分散などのチュートリアルを網羅した高度な Java 資料を自分で収集する必要があります。

<<:  適切なフレームワークの選び方 - 分散タスクスケジューリングフレームワークの選択

>>:  分散Redisディープアドベンチャー-Sentinel

推薦する

namecheap$5.99 新規登録/移管 + 1年間の無料ドメインプライバシー保護

Namecheap は CISPA に対抗するために特別なドメイン名プロモーションを開始しました。ド...

dynadot-10 月のドメイン名プロモーション (3.99 登録組織)

Dynadot は比較的大規模なドメイン名登録会社です。10 月のドメイン名プロモーションの第 1 ...

ソーシャル ネットワーキング サイトで生き残る方法: 興味が王様

みなさんの大学生は卒業しましたか? Tianya Forum のモデレーターは全員、レンガを動かす仕...

WeChat パブリックアカウントのユーザー粘着性を高めるにはどうすればよいでしょうか?

WeChat公式アカウントのユーザー粘着度とは、ユーザーのアカウントに対する認知度と依存度を指し、P...

YY社の予想外のハイライト:音楽収入が半年で9000万を超え、30%を占める

YY社の2012年上半期の収益構造新浪科技は10月15日夜、YY社が証券取引委員会に目論見書を提出し...

スマートホスト: 月額 2.95 ドル、高性能 VPS、KVM 仮想 VPS、NVMe ハードドライブ、オプションのデータセンター 8 か所

Smarthost は長い歴史を持つアメリカのホスティング会社です。1996 年に仮想ホストの運用を...

データベース |分散トランザクションの実装原理の詳細な説明

トランザクションは、データベース システムにおいて非常に興味深く重要な概念です。これは、データベース...

ウェブマスターの考え: 強い需要は必ずしも拡大の成功を意味するわけではない

確かに高値で始まって安値で終わるというのは信じやすいと言っても過言ではありません。 NetEase ...

Alibaba Cloud PolarDB データベースはクラウド ネイティブを極限まで高めます。業界初の3層プーリング

10月20日、アリババクラウドは2021年雲旗大会において、自社開発のクラウドネイティブリレーショナ...

「第一人者」が語る注目キーワードSEOの実践運用

リーダーとは何ですか?まだ分​​からないの?あなたはまた遅れています。取り戻してください。ウェブマス...

検索エンジンからすぐに好まれる方法

「Google やその他の検索エンジンで上位にランクされるには、Web サイトが有用かつ関連性が高く...

スナップショットが2度目の復元。Baiduが再びその威力を発揮するのか?

現在、中国のほとんどのウェブサイトはBaiduで自然ランキングされています。最近の不安定さにより、ウ...

AI時代のクラウドベースのインテリジェントコンピューティング

人工知能の計算能力に対する需要は弾力性と拡張性があり、ピーク需要に耐える能力と日常使用中に調整する能...