まず最初に、flash/flex が周囲の Web ページのセッション/Cookie の状態を奪う真の公式な方法がNetConnection
あれば、ユーザーがすでにログインしている場合、資格情報を再度提供する必要はありません。 AMF接続をセットアップしてください。今すぐ私を止めて、公式の回答を投稿してください。
それを除けば、私が検索したところ存在しないように見えるので、存在しないと仮定しています。私はこれを行う手段を考案しましたが、それが安全かどうかについてのフィードバックが必要です。
- django ミドルウェアが原因で、フラッシュ オブジェクトのラッパー ページにアクセスすると、常に安全な https にアクセスします。
- ページ ビューが Django に読み込まれると、現在実行中のセッション (表向きは誰かがログインしているセッション) を指す一意のキーを持つ "セッション エイリアス" オブジェクトが作成されます。
- そのセッション エイリアス モデルが保存され、そのキーが別のランダムな文字列である Cookie に配置されます。これを randomcookie と呼びます。
- その randomcookie キー名はコンテキスト変数として渡され、swf への flashvar として html に書き込まれます。
- swf も https 経由でのみロードされます
- Flash アプリケーションは
ExternalInterface
、Java を呼び出してそのランダム Cookie の場所の値を取得し、Cookie も削除します。 - 次に
NetConnection
、安全なサーバー https の場所に を作成し、その randomcookie を引数 (URL ではなくデータ) として login-using-cookie rpc に渡します。 - ゲートウェイ側では、pyamf はセッション エイリアスを検索し、それが指すセッションを取得し、それに基づいてユーザーをログインします (エイリアスを削除するため、再利用できません)。
- (また、ゲートウェイ リクエストは、セッション Cookie と session.session_key を既知のセッション ID に設定することもできますが、まったく新しいセッション キーを作成することもできます...そうすることで、レスポンスが適切に影響を受けると想定しています。正しいセッションキーが含まれています)
- この時点で、フラッシュ側で返された Cookie の値は、
NetConnection
さらなる呼び出しが認証されるように に固執する必要があります (接続が通常の方法でユーザー名とパスワードを使用して認証される場合、これは確実に機能するため、これは安全な賭けだと思います。すぐにこれを証明または反証します)
それで、これは安全ではありませんか、それとも正しく機能しますか? 私が知る限り、html ページは SSL 経由であることが保証されているため、キーと Cookie データは暗号化され、盗まれないようにする必要があります。次に、ゲートウェイもhttpsであるため、その中の情報は、基本的に一時パスワードとして1回限り使用しても安全であり、ssl経由で再度送信されます. その後、https 経由で通常の pyAMF システムを使用し、異常なことは何もしていません。