検索
ホームページバックエンド開発PHPチュートリアルCookie ベースの SSO ログインの分析と実装、cookieso login_PHP チュートリアル

CookieベースのSSOログイン分析と実装、Cookiesoログイン

SSOとは何ですか?

現在、多くの大手インターネット企業が多くのアプリケーションを提供しています。たとえば、以下は Taobao のスクリーンショットです。



Tmall ジュファスアン Toutiao などはすべて別のアプリケーションであり、まったく異なるドメイン名を使用しているものもあります。ただし、淘宝網に登録されているすべてのユーザーは一連のユーザー名とパスワードを使用しているため、これらのシステムを直接切り替えると、ログインできなくなります。同じ時間です。 ステップ、経験は非常に貧弱です。別の例を挙げると、多くの企業には、人事システム、財務システム、勤怠システムなど、多数の社内システムがあります。従業員が 1 つのシステムにログインした場合、別のシステムにジャンプすることは依然として困難です。 ログインする必要があるので、非常に不快に感じます...

これに基づいて、

他のアプリケーション (同じドメイン内にない) に通知しますか? SSO(Single Sign On)应运而生。当然,我们来现实这个需求的方法有很多种,使用Cookie是其中比较简单的方式,主要需要解决的问题是:Cookie是不能跨域传递的,如何将一个域的Cookie

クロスドメインやその他の関連する問題を防ぐように設計されています。 so,如果你对cookie机制不太熟悉,请先google,并大致了解为什么cookie

実装方法は?

SSOは次の方法で実装できます

Cookieを共有する

サブシステムがすべて親ドメイン名の下にある場合、親ドメインの下に Cookie を植えることができます。これにより、同じドメイン名の下にある Cookie をブラウザで共有できるようになり、Cookie の暗号化および復号化アルゴリズムを通じてユーザーのセッション ID を取得できるようになります。したがって、SSO を実装します。

ただし、この方法にはいくつかの欠点があることが後でわかりました。
a. 同じドメイン名を持つすべてのシステムが SessionID を取得できますが、これは簡単に変更され、安全ではありません。 b. ドメインをまたいで使用することはできません。


チケット認証、現在採用している方法です

この SSO の実装には次の手順があります:

a. ユーザーが特定のサブシステムにアクセスすると、ログインしていない場合は SSO ログイン ページにジャンプするよう指示されることがわかります。 b. SSO がログインしたかどうかを確認します。 c. すでにログインしている場合は、コールバック アドレスに直接ジャンプし、認証チケットを返します。 d. ログインしていない場合、ユーザーがユーザー名/パスワードを正しく入力すると、認証が成功してコールバック アドレスにジャンプし、認証チケットが返されます。 e. サブシステムはチケットを取得し、SSO を呼び出してユーザー ID およびその他の情報を取得し、成功後にユーザーがログインできるようにします。



前に述べたように、
属性を渡す方法。

Cookieドメイン

Http プロトコルがコンテキストをある程度維持できるようにするために、server は応答ヘッダーに Set-Cookie を追加して、クライアント側では、Set-Cookiedomain フィールドを使用して、この cookie が配置されているドメインを示します。 Cookie来实现SSO,主要是如何解决跨域问题。首先来谈谈Set-Cookie中的domain栗: server が戻りヘッダーに Set-Cookie を追加する場合は、www.cookieexm.com にアクセスします。 を指定しない場合は、 <code>cookie の場合、この cookie のデフォルト ドメインは www.cookieexm.com になります。つまり、www.cookieexm.com にのみアクセスします。 > >クライアントはこの cookie をサーバーに返します。

domain.cookieexm.com として指定すると、クライアントは次のドメイン名にアクセスします: www.cookieexm.com www1.cookieexm.com cookieexm.com ***.cookieexm.comcookie を返すことができます。

それで、結論を導き出します:

クライアントは Cookie のドメインと最後から一致します

これに基づいて、SSO ログインを実装できます。 Http协议在一定程度上保持上下文,server在响应的头部可以加入Set-Cookie来写入一些数据到客户端,Set-Cookie中的domain字段用来表示这个cookie所在的域。
栗子:
我们访问www.cookieexm.com,如果server在返回头部中加入了Set-Cookie,如果不指定domain,那么默认这个cookie的域就是www.cookieexm.com,也就是只有访问www.cookieexm.com时客户端才会把这个cookie返给服务端。
如果我们指定domain.cookieexm.com,那么客户端在访问以下域名:www.cookieexm.com www1.cookieexm.com a.cookieexm.com ***.cookieexm.com 时都能够把cookie返回。
所以,我们得出一条结论:客户端对cookie的domain的匹配是从结尾进行匹配的,有了这个基础,我们就可以实现我们的SSO

クッキーに関する注意事項

    http のみに設定します
  • ログイン資格情報(チケットやユーザー名など)は暗号化する必要があります
  • Cookie は個人データを保存できません
具体的な計画

次のサブシステムが必要だとします

たとえば: **.a1.a2 **.b1.b2 **.c1.c2间实现单点登录,首先我们需要一个专门用于单点登陆的认证系统(sso.s1.s2)。假设目前系统处于未登录状态,访问www.a1.a2


各ステップの機能を個別に見てみましょう:

説明: ビジネス認証システムは存在しない可能性があります。機密性が高くない一部のシステムは、
認証情報から直接取得できます。 SSO Authorization重定向到业务系统,并把SSO

下の図に示すように、ユーザーが

アプリケーションにアクセスする場合は、この時点で上記を続行します。 www.b1.b2

www.a1.a2 にアクセスする場合とは異なり、sso.s1 であるため、SSO 認証 にリダイレクトするときにユーザー名を入力する必要はありません。 > にはこの時点ですでに cookie があり、cookie で直接確認できます。 www.a1.a2不同的是我们在重定向到SSO Authorization时已经不需要再去输入用户名,因为sso.s1.s2此时已经存有cookie,直接用cookie验证。
以上,就是一个简单的基于Cookie上記は、Cookie に基づくシンプルなログイン システムです。

これらの問題のいくつかは解決する必要があります

  • 大量の一時信頼データを効率的に保存する方法
  • 情報転送プロセスの改ざんを防ぐ方法
  • SSO システムにログイン システムとログイン システムを信頼させる方法

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

2 番目の質問では、デジタル証明書署名または md5 などの方法によるデジタル署名方法が一般的に採用されます。これには、SSO システムがログイン URL を返すときに検証する必要があるパラメーターを md5 で暗号化する必要があります。ログインする必要があるシステムが最終的に信頼関係を検証するときに、トークンが SSO システムに渡される必要があります。SSO システムは、トークンを検証することで情報が変更されたかどうかを識別できます。

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

転載アドレス: http://www.jianshu.com/p/baa94d5f1673

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1068261.html技術記事 Cookie ベースの SSO ログイン分析と実装、cookieso ログイン SSO とは何ですか? 現在、多くの大手インターネット企業が多くのアプリケーションを提供しています。たとえば、以下は淘宝網のスクリーンショットです: Tmall Juhua...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPを使用して電子メールを送信する最良の方法は何ですか?PHPを使用して電子メールを送信する最良の方法は何ですか?May 08, 2025 am 12:21 AM

BestappRoachforseminginphpisusingthephpmailerlibrarydueToitsReliability、featurrichness、andeaseofuse.phpmailerSupportssmtpは、detairederorhandlingを提供します

PHPでの依存関係注射のベストプラクティスPHPでの依存関係注射のベストプラクティスMay 08, 2025 am 12:21 AM

依存関係注射(DI)を使用する理由は、コードのゆるい結合、テスト可能性、および保守性を促進するためです。 1)コンストラクターを使用して依存関係を注入します。2)サービスロケーターの使用を避け、3)依存関係噴射コンテナを使用して依存関係を管理する、4)依存関係を注入することでテスト可能性を向上させる、5)注入依存性を回避、6)パフォーマンスに対するDIの影響を考慮します。

PHPパフォーマンスのチューニングのヒントとコツPHPパフォーマンスのチューニングのヒントとコツMay 08, 2025 am 12:20 AM

phpperformancetuningisucial cuseenhancess andandandadsand。

PHP電子メールセキュリティ:電子メールを送信するためのベストプラクティスPHP電子メールセキュリティ:電子メールを送信するためのベストプラクティスMay 08, 2025 am 12:16 AM

bestpracticesforsendingemails securlyinphpinclude:1)sutureconsmttarttlsencryptionとの使用の使用、2)検証およびサンシジン化のinputStopReventinjectuctacks、3)adinitivedinitivedInemailsopenslsl、4)adlinglinglingemailoaに

パフォーマンスのためにPHPアプリケーションをどのように最適化しますか?パフォーマンスのためにPHPアプリケーションをどのように最適化しますか?May 08, 2025 am 12:08 AM

tooptimizephpapplicationsforporformance、usecaching、databaseoptimization、opcodecaching、andserverconfiguration.1)cachingwithedatedatedatafethtimes.2)最適化バイズビーインデキシング、readedandandandwriteoperations.3)

PHPの依存噴射とは何ですか?PHPの依存噴射とは何ですか?May 07, 2025 pm 03:09 PM

依存関係の依存性、テスト可能性、および維持可能性の依存性の依存性の依存性、および維持可能性は、エクステルンド依存性を維持する可能性があります

最高のPHPパフォーマンス最適化手法最高のPHPパフォーマンス最適化手法May 07, 2025 pm 03:05 PM

PHPパフォーマンスの最適化は、次の手順を通じて実現できます。1)スクリプトの上部にrequire_onceまたはinclude_onceを使用して、ファイルの負荷数を減らすことができます。 2)プリプロセシングステートメントとバッチ処理を使用して、データベースクエリの数を減らします。 3)OpCodeキャッシュのOpCacheを構成します。 4)PHP-FPM最適化プロセス管理を有効にして構成します。 5)CDNを使用して静的リソースを配布します。 6)コードパフォーマンス分析には、XdebugまたはBlackfireを使用します。 7)配列などの効率的なデータ構造を選択します。 8)最適化実行のためのモジュラーコードを記述します。

PHPパフォーマンスの最適化:OpCodeキャッシングの使用PHPパフォーマンスの最適化:OpCodeキャッシングの使用May 07, 2025 pm 02:49 PM

opcodeCachingsificlyprovesppherformanceBycachingCompiledCode、reducingServerloadandResponsetimes.1)itStoresPhpCodeInMemory、バイパス補助補強団体

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。