ホームページ >バックエンド開発 >PHPの問題 >PHPでSSOログインを実装する方法

PHPでSSOログインを実装する方法

藏色散人
藏色散人オリジナル
2021-12-30 10:06:192672ブラウズ

SSO ログインを実装する

php メソッド: 1. ユーザーはログイン ページにアクセスしてカスタム SID を生成し、それを Redis と Cookie に書き込みます; 2. ビジネス BaseController のコンストラクターで、Redis を更新する操作を書き込みます; 3. js ジャンプ イベントを構築すると、サーバーは SID に基づいてユーザーの Redis をチェックします。

PHPでSSOログインを実装する方法

#この記事の動作環境: Windows 7 システム、PHP バージョン 7.1、Dell G3 コンピューター。

php で SSO ログインを実装する方法

SSO シングル サインオンの設計と PHP 実装

シングル サインについて理解しておくことをお勧めします-最初に SSO 関連の概念について説明します。

1. SSO: シングル サインオン、1 回のログイン、すべての関連システムに入力可能、繰り返しログインする必要なし

2. 実装計画: 共有 [トップレベル ドメイン名] cookie S [ID] [クロスドメイン SID]

3. PHP セッションを放棄し、ユーザー情報を redis に保存します

4. ユーザーが合法的に操作するたびに、ビジネス BaseController コンストラクター、redis を更新する操作を記述し、redis に保存されているユーザー ログイン状態の ExpireTime を更新します -- 目的は、セッションの有効期限をシミュレートすることです

5. 特定の SSO 実装シングル サインオンの: (PHPsessionId は非推奨です) -- 認証されたユーザーのログイン API は sso サーバー上に配置され、他のログイン ページはこのインターフェイスを呼び出します。

1) SSO シングル サインオン認証: ユーザーはログイン ページに入ってカスタム SID を生成し、それを Redis と Cookie に書き込みます。アカウント パスワードを送信し、SSO 認証 API を調整して渡す必要があります。ユーザーを Cookie 内の SID にバインドします (LoginAction/ssologin/line 321: api::get 内)

ローカル サーバーはトークン (両方ともカスタム フィールドとルール) を生成し、redis に保存します。

2) ビジネス BaseController のコンストラクターで、redis を更新する操作を記述し、ビジネスが来たら、対応する SID とトークンの有効期間を更新します (つまり、 30 分間操作がない場合、ログイン状態は期限切れになります)、 -- 目的はセッションの期限切れをシミュレートすることです

3) SID が Cookie に保存されるドメイン名はトップレベル ドメイン名である必要があります[.example.com] など、Cookie の有効期間は 1 か月にすることをお勧めします。

4) ユーザーが、ログインしたばかりのドメイン名ページから他のサブドメインを直接クリックします、 Cookie が SID 自体を取得するため、リンクはクリア テキストの SID またはトークンを運ぶ必要はありません。Cookie 内の SID に基づいて、サーバーは SSO 認証インターフェイスにアクセスして、SID に対応する Redis データが有効かどうかを確認します。 ;

6. クロスドメイン ログイン: たとえば、[.example.com] ではないドメイン名 (例: erji.mogo.com) にログインしたいと考えています。 、同じ SSO 認証システムを使用しているのですが、どうすればよいですか?

ログインしたばかりのドメイン名の Web ページがまだ表示されています。JS はジャンプ イベントを構築します。ジャンプ url?&SID=xxx で十分です。jQuery.cookie.js を使用して Cookie から SID を取得できますSID に基づいて、ユーザーの Redis データの有効期限が切れているかどうかを確認します。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPでSSOログインを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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