ホームページ  >  記事  >  バックエンド開発  >  PHPでシングルサインオンを実装する原理は何ですか

PHPでシングルサインオンを実装する原理は何ですか

PHPz
PHPzオリジナル
2020-09-25 16:01:362920ブラウズ

シングル サインオンを実装するための PHP の原則は、まずクライアントの Cookie に信頼を保存し、次に Cookie をさらに検証することです。大量の一時的な信頼データを効率的に保存するには、memcached に似た分散キャッシュ ソリューションを使用できます。

PHPでシングルサインオンを実装する原理は何ですか

シングル サイン オン SSO (シングル サイン オン) は、複数のシステムが共存する環境で、ユーザーが 1 か所でログインした後は、他のシステムにログインするということは、ユーザーの 1 回のログインが他のすべてのシステムによって信頼されることを意味します。

(関連する推奨事項: php トレーニング )

シングル サインオンは、Alibaba のような Web サイトなどの大規模な Web サイトで非常に頻繁に使用されます。または数千のサブシステムが存在し、ユーザーの操作やトランザクションには数十のサブシステムのコラボレーションが含まれる場合があります。

各サブシステムでユーザー認証が必要な場合、ユーザーが混乱するだけでなく、各サブシステムも同様にこのロジックが繰り返されます。認証と認可はクレイジーです。

最終的な分析として、シングル サインオンの実装とは、その信頼を生成して保存する方法、そして他のシステムがこの信頼の有効性をどのように検証するかを解決することです;

したがって、重要なポイントは次のとおりです。

1. ストレージ信頼

2. 検証信頼

上記の問題が解決され、冒頭で述べた効果が得られる限り、次のようにすることができます。 SSOと言われています。

SSO を実装する最も簡単な方法は Cookie を使用することです。実装プロセスは次のとおりです:

PHPでシングルサインオンを実装する原理は何ですか

上記のソリューションが保存しているものを見つけるのは難しくありません。 Cookie では、この方法は実装が簡単ですが、すぐに次の 2 つの問題に疑問を持つようになります:

1. Cookie は安全ではありません

2. クロスドメイン ログインはnot allowed

For 最初の問題は、通常、Cookie を暗号化することで解決されます。2 番目の問題は欠陥です。実際、この解決策のアイデアは、クライアントに信頼関係を保存することです。これは、Cookie が必ずしも唯一の方法ではありません。Flash を使用してこの問題を解決することもできます。Flash の Shared Object API はストレージ機能を提供します。

一般的に、大規模システムではサーバー側に信頼関係を保存する方法が採用されます。実装プロセスは次のとおりです。

PHPでシングルサインオンを実装する原理は何ですか

上記の解決策は次のとおりです。信頼関係をサーバー側に保存します。関係は別の SSO システム (当面はそう呼びましょう) に保存されます。これは単にクライアントからサーバーに移動されるだけですが、いくつかの問題を解決する必要があります:

1. 大量の一時的な性的信頼データを効率的に保存する方法

2. 情報転送プロセスの改ざんを防ぐ方法

3. SSO システムの作成方法ログイン システムと非ログイン システムを信頼する

最初の質問については、一般に、memcached に似た分散キャッシュ ソリューションを使用できます。これにより、スケーラブルなデータ ボリュームのメカニズムを提供できるだけでなく、効率的なデータ ボリュームも提供できます。アクセス。

2 番目の質問については、デジタル証明書署名または md5 などの方法によるデジタル署名方法が一般的に採用されています。これには、SSO システムが、メッセージを返すときに検証する必要があるパラメータに対して md5 を実行する必要があります。ログイン URL。トークンを暗号化して返します。

ログインする必要があるシステムが最終的に信頼関係を検証するとき、トークンを SSO システムに渡す必要があります。SSO システムは、情報が暗号化されているかどうかを識別できます。トークンの検証により認証されました。

最後の問題については、ホワイトリストによって解決できます。簡単に言うと、ホワイトリストに登録されているシステムのみが本番の信頼関係を要求できます。同様に、ホワイトリストに登録されているシステムのみがログインを免除されます。 。

以上がPHPでシングルサインオンを実装する原理は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。