3

私たちはColdFusion8から10に移行しています。アプリケーションには.NETで記述された機能もありますが、セッションはColdFusionでのみ維持されます。

.NETおよびCF統合用のColdFusion8の現在のアーキテクチャ:

  1. セッションは、ユーザーがアプリにログインしたときに設定されます(CFの場合)。(J2EEセッションを使用しています。)
  2. Jsessionid,CFIDユーザーが.NETリンクをクリックし、CFTOKENURLを介して.netページに渡されたとき。.netコード内では、セッションをチェックするために次の手順が実行されます。

    2a。urlでColdFusionファイルリクエスト(chkSession.cfm)を実行する一般的な関数を呼び出しますjsessionid

    2b。chkSession.cfmはsession.UID、使用可能な場合は戻り、それ以外の場合は-1を返します。inurlが有効なSession.UID場合に利用可能になります。jsessionid

    2c。有効なUIDが返されると、.NETページがロードされます。-1が返されると、ユーザーはログインページにリダイレクトされます。

CF 10の問題:

CF 10では、常に-1を取得しています。CF 10のセキュリティ強化の一環として、URLにcfide、を渡してColdFusionセッションを再作成することはできません。cftokenjsessionid

.NET機能をColdFusion10で機能させるための最良の方法についてアドバイスをお願いします。.NETからColdFusionセッションをチェックするためのより良い方法はありますか?私が考えることができる1つのオプションは、データベースを使用することです。迅速に実装でき、堅牢なソリューションを楽しみにしています。

4

1 に答える 1

1

私がうまくいくと思うのは、.Netクライアントコードを変更して、リクエストのCookie値としてJSessionIDを送信することです。そうすれば、あなたが再び機能するはずの機能です。

URLでセッションIDを公開すると、特定のセキュリティの脆弱性にさらされる可能性があるため、将来的に回避することを検討したい場合があることに注意してください。

私はあなたが言及したデータベースアプローチも使用しました。このルートを使用する場合は、CFコードに、GUIDを識別子として使用し、レコードが作成されたときのタイムスタンプを使用してレコードを挿入してもらいます。.Net側では、GUIDを検索し、タイムスタンプがX秒未満のものである場合にのみ要求を受け入れるため、長期間認証されるトークンを作成しないでください。Xは、クライアントがCFから.Netページへのリダイレクトをたどるのにかかると思われる最大時間である必要があるため、2で十分である可能性があります。使用済みトークンを削除し、「未使用」トークンを削除するようにスケジュールされたタスクが必要になります。

于 2013-03-27T12:32:14.630 に答える