3

別のセッションインスタンスのセッション値を読み取る必要がある PHP で何かをしています。例

Browser1: $_SESSION['value']="user1";

Browser2: $_SESSION['value']="user2";

Browser1 は、特定のリクエストから「user2」値を取得する必要があります。リクエストには cookie(key, value) も含まれます。

どうやってやるの?

ありがとう、ワエル

4

3 に答える 3

4

1台はSSO(シングルサインオン)対応のPHPサーバー、もう1台はRuby on Rails(ROR)上で動作するWebアプリケーション

[...]

ただし、ROR サーバーがブラウザーに代わって SSO で認証要求を送信する必要がある新しい機能を実装する必要があります。

SSO モデルはそのように機能する必要はありません。実際、そうすべきではありません。

通常、SSO は次のように機能します。疲れていて正式な名前を覚えていないので、標準外の名前を使用しています。

  • エンド ユーザー: ログインが必要なブラウザを持っている人。
  • ページ サーバー: エンド ユーザーがログインしようとしているサイト。
  • 認証サーバー: エンド ユーザーのデータのマスター バージョンを実際に所有するサイト。
  1. エンド ユーザーは、ページ サーバーからページを要求します。
  2. Page Server は、エンド ユーザーの既存のログイン ステータスをチェックします。エンド ユーザーがログインしていない場合、ページ サーバーはエンド ユーザーを一意のトークンを使用して認証サーバーにリダイレクトします。
  3. 認証サーバーは、一意のトークンを使用してエンド ユーザーから要求を取得します。ユーザーをログインさせるために必要なことは何でもします。
  4. ユーザーがログインすると、認証サーバーは別の異なる一意のトークンを使用してエンド ユーザーをページ サーバーに送り返します。
  5. エンド ユーザーがページ サーバーに対して行う要求により、ページ サーバーは認証サーバーに対して要求を行います。リクエストには、元の一意のトークン別の別の一意のトークンの両方が含まれます。
  6. 認証サーバーは、ページ サーバーにユーザーに関する情報を返すか、トークンが無効な場合はエラー メッセージを返します。ユーザー データが取得されると、トークンは認証サーバーによって無効化されます。(これにより、リクエストのリプレイが防止されます。ちなみに、このプロセス全体で SSL を使用する必要があります。)
  7. Page Server はユーザーをログインさせ、エンド ユーザーに関して必要な情報を保存します。

Page Server が End User を「偽装」することはありません。また、Page Server または Authentication Server が互いのエンド ユーザー セッション データにアクセスする必要もありません。

Page Server がユーザーの資格情報のコピーを取得することは決してありません。 エンド ユーザーの実際の認証は、認証サーバーでのみ行われます。Page Server は、Authentication Server が適切なリクエスト トークンを使用してユーザーを返送した後、ユーザーに関するデータをリクエストします。

必要に応じて、このプロセスをより複雑にすることができます。たとえば、認証サーバーがユーザーを戻す URL は、カスタマイズ可能である必要がある場合があります。認証サーバーへのエンド ユーザー リクエストに戻り URL を含めることができますが、そうする場合は、途中で悪意のあるクレチンによって操作されないように、(HMAC などを使用して) 署名する必要があります。

泥のように透明?

于 2010-07-26T07:18:40.053 に答える
1

アプリケーションのすべてのユーザーがアクセスできる、ある種のデータ ストレージ システムを作成する必要があります。Cookie とセッションは、現在のユーザー/ブラウザーに限定されます。

データベースまたはファイルは、使用する必要があるものの例です。

于 2010-07-26T06:14:15.393 に答える
1

デフォルトのセッション ストレージはファイルです。他のファイルにアクセスするのと同じように、各ファイルにアクセスできます。セッション データはエンコードされているため、使用する前にデコードする必要があります。のコメントには、これに対する多くの解決策があります

  • session_decode- session_decode — 文字列からセッション データをデコードします
于 2010-07-26T06:53:27.917 に答える