3

ゴール:

アプリケーション全体を構成するPHPアプリケーションとColdfusionアプリケーション間のセッション状態を維持します。

現在の方法:

Coldfusionアプリケーションにログインすると(ログインする唯一の方法、つまりPHPアプリケーション経由でログインできない)、次のJSスニペットを使用して、PHPセッションCookieを設定するリモートPHPファイルを呼び出します(Coldfusion経由では設定できません)。 、およびその後のColdfusionページへのアクセスで、PHPセッションを更新します。

<script type="text/javascript">
  // Create an image.
  var imgPing = new Image();
  // Set image src to App A ping url.
  imgPing.src = "http://remotePHPApplicationURL/remoteFile.php";
</script>

このスニペットは、並列セッションを維持するためにログインすると、各Coldfusionページに読み込まれます。

このメソッドは、非SSL Coldfusionページを介して呼び出された場合に設計どおりに機能しますが、アプリケーションを構成するSSLColdfusionページがいくつかあります。SSLページがこのスニペットを呼び出すと、Chrome Inspector内で、「安全でないコンテンツ」の警告(SSL接続が切断されます)と「匿名関数」エラーの両方が発生します。

CFHTTPでこのPHPファイルを「GET」しようとしましたが、PHPCookieが設計どおりに設定されていません。img.srcを使用することで、CFHTTPを使用する場合と比較してPHPファイルを実行する方法について私が理解していないことがあります。

質問:

非SSLの状況でのみ機能するように見えるimg.srcを使用するよりも、PHPファイルを呼び出す/実行する/pingする別のより良い方法はありますか?

PHPファイルの例を次に示します。

<?php
  error_reporting(E_ALL & ~E_NOTICE);
  define('THIS_SCRIPT', 'index');
  define('CSRF_PROTECTION', true);

  $globaltemplates = array();       

  require_once('./global.php');

  $phpapp->session->save();
  setcookie('userid', 'uid');
  setcookie('password', 'pass');
  header("Content-Type: image/png");
?>
4

3 に答える 3

4

CFHTTP を使用できますが、ブラウザーとリモート アプリケーションの間のプロキシのように使用し、送受信される Cookie を手動で管理する必要があります。

ColdFusion から phpBB にユーザーをログインさせるためにこれを成功させました

プロセスは次のようになります

  1. CFHTTP から remoteFile.php へ
  2. 返された http 応答を検査し、リモート アプリによって設定された Cookie を抽出します
  3. CFCOOKIE を使用して、ユーザーのブラウザーでそれらを設定します。

後続のリクエストでは、アプリから送信された Cookie が存在するかどうかを確認する必要があります。存在する場合は、ステップ 1 で CFTTPPARAM を使用して CFHTTP リクエストと共にそれらを渡します。おそらく、アプリによって設定された sessionid または同様の Cookie があり、これはセッションを維持するために送信する必要があります。

于 2012-04-30T07:25:55.400 に答える
0

私が間違っていることを願っていますが、解決策が思いつきません。ただし、解決策を見つけるのが難しい理由については、ある程度の洞察があります。

PHP ページを呼び出しているのはユーザーのブラウザではなく、ColdFusion サーバーであるため、CFHTTP は機能しません。したがって、ColdFusion サーバーにはセッションがありますが、ユーザーのコンピューターにはありません。

ブラウザー内からファイルを呼び出す方法はたくさんありますが (IMG タグ、CFSCRIPT タグ、IFRAME、画像オブジェクトから呼び出すこともできます...)、それらはすべて同じ問題に遭遇します。 SSL ページから非 SSL ファイルを呼び出すと、警告が表示されます。

そのため、PHP サーバーで SSL を使用できない場合に SSL を介して ColdFusion から PHP セッションを維持することは、ブラウザーで警告が表示されなければ不可能な場合があります (もちろん、これが間違っていることを証明したいと思います)。

必要に応じて、サーバーから PHP サーバーへのリンクを作成し、ログイン情報を含むフォーム投稿を PHP サーバーに送信して、サードパーティのサイトにアクセスすると自動的にログインできるようにすることです。それがあなたの状況でうまくいくかどうかはわかりませんが、私はそれをそこに捨てると思いました.

ただし、要点は、ColdFusion アプリケーションの各ページ リクエストでセッションを維持する以外に、目的への別のパスを探すことです。

于 2012-04-30T03:56:19.870 に答える
0

SAML SSO 実装を使用し、必要な場合にのみ特定のアプリケーションに対して認証することをお勧めします。DB を使用して、単純なセッション情報を json 文字列としてクロスストアできます。適切に実装された場合、エクスペリエンスはシームレスになり、スケーラブルなソリューションが提供されます。

于 2012-04-30T18:20:54.790 に答える