0

私は CakePHP の Cookie を理解しようとしており、少し変わった認証要件を満たしています。

現在 COTS ソフトウェアで構築されたレポート システムと統合されている CakePHP ベースのデータ収集システムがあります。レポート システムはアクセス制御する必要があり、両方のシステムですべてのユーザー アカウントを複製したくない場合を除き、CakePHP システムでユーザーが認証されているかどうかをレポート システムで確認できるようにする必要があります。

レポーティング システムでは、クライアントのレポート リクエストが最初に到着したときに、Java クラスをロードして機能を実行することができます。だから私の考えは

  1. 着信レポート リクエストを検査し、CakePHP サイトで認証/セッション識別に使用される Cookie を抽出します。
  2. この Cookie を添付して、Java 関数から CakePHP サイト内の「reportauth」アクションにリクエストを送信します。
  3. その後、CakePHP 内の reportauth アクションは、ユーザーが CakePHP サイトにログインしているかどうかを確認し、暗号化された応答を Java 関数に返し、ユーザーの役割を識別します。

Cookie を取得してリクエストで送信し、暗号化された情報を PHP と Java の間で個別に共有できます。

ただし、Java リクエストで「フレッシュ」Cookie (新しいログイン後にブラウザが CakePHP サイトへのリクエストで繰り返し送信する Cookie) を使用すると、応答はユーザーがログインしていないことを示します。その後、ブラウザでサイトをリロードすると、ログアウトされました。ユーザー エージェント (?) に関する追加情報が Cookie に含まれている可能性があると思われます。これにより、Java ソースのリクエストがスローされ、そのセッションが安全のために破棄されますが、システムについてはよくわかりません。私は、CakePHP がセッションのハイジャックから保護しているのを見ているのではないかと思います (通常、これは私を喜ばせます)。

この問題を回避する方法があるかどうか、誰か教えてもらえますか? データ収集サイトはすでに稼働しており、レポートの締め切りも間近に迫っているため、CakePHP のカスタム認証コンポーネントを含まないサイトが望ましいです。

どんな助けでも大歓迎です。

4

1 に答える 1

1

1 つの回避策:

CakePHP を取得して、別の Cookie にランダム トークンを保存し、ユーザー テーブルのフィールドとして保存します。

次に、Java アプリケーションにトークンを取得させ、それを Cakephp アプリケーションに送信してユーザーの詳細を取得します。

または、CakePHP アプリ自体で認証し、セッション IDを渡して Cake が正しいセッションを使用するようにします。その関数での設定は、session_start() が呼び出される前に行う必要があることに注意してください。

于 2011-09-30T09:46:44.920 に答える