ホームページ  >  記事  >  バックエンド開発  >  PHPシングルサインオンの実装原理例を詳しく解説

PHPシングルサインオンの実装原理例を詳しく解説

王林
王林オリジナル
2019-09-03 11:58:544283ブラウズ

PHPシングルサインオンの実装原理例を詳しく解説

シングル サイン オン SSO (シングル サイン オン) 簡単に言うと、複数のシステムが共存する環境で、ユーザーは 1 か所でログインした後、必要ありません 他のシステムにログインするということは、ユーザーの 1 回のログインが他のすべてのシステムによって信頼されることを意味します。シングル サインオンは、Alibaba のような Web サイトなど、大規模な Web サイトで頻繁に使用されます。Web サイトの背後には、数百または数千のサブシステムがあります。ユーザーの操作またはトランザクションには、数十のサブシステムの協力が含まれる場合があります。各操作ですべてのサブシステムがユーザー認証を必要とする場合、 . 認証と認可を繰り返すロジックにより、ユーザーがおかしくなるだけでなく、各サブシステムもおかしくなってしまいます。最終的には、シングル サインオンの実装は、その信頼を生成および保存する方法と、他のシステムがこの信頼の有効性をどのように検証するかを解決することになるため、重要なポイントは次のとおりです。 #1. 信頼を保存する

2. 信頼を検証する

##上記の問題が解決され、冒頭で述べた効果が得られる限り、 SSO と言われます。 SSO を実装する最も簡単な方法は Cookie を使用することです。実装プロセスは次のとおりです:

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

PHPシングルサインオンの実装原理例を詳しく解説

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

2. クロスドメイン ログインは許可されません

最初の問題は、通常、暗号化された Cookie によって解決されます。2 番目の問題は欠陥です。実際、この解決策のアイデアは、信頼関係をクライアントに保存することです。これを実装することはできません。Cookie のみを使用する必要があります。フラッシュも使用できます。フラッシュの共有オブジェクト API はストレージ機能を提供します。 一般的に、大規模システムではサーバー側に信頼関係を保存する方法が採用されます。実装プロセスは次のとおりです。

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

PHPシングルサインオンの実装原理例を詳しく解説

1. 効率的にするにはどうすればよいですか?大量の一時的な信頼データを保存します

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

3. SSO システムにログイン システムと Bindeng システムを信頼させる方法##最初の問題については、通常、memcached に似た分散キャッシュ ソリューションを使用できます。スケーラブルなデータ量のメカニズムを提供するだけでなく、効率的なアクセスも提供します。 2 番目の質問については、デジタル証明書署名または md5 などの方法によるデジタル署名方式が一般的に採用されています。これには、SSO システムがログイン URL を返すときに検証する必要があるパラメータを md5 で暗号化し、ログインする必要があるシステムが最終的に信頼関係を検証するときに、トークンを SSO システムに渡す必要があります。SSO システムはトークンを検証することで、情報が変更されたかどうかを識別できます。最後の問題は、ホワイトリストによって解決できます。簡単に言うと、ホワイトリストにあるシステムのみが本番の信頼関係を要求でき、同様に、ホワイトリストにあるシステムのみがログインから免除されます。

その他の関連する質問については、PHP 中国語 Web サイトをご覧ください: PHP ビデオ チュートリアル

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

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